Git 创建新分支 和 合并分支 的详细命令解析

一、创建新分支

1. 创建并切换到新分支

git checkout -b <新分支名>

作用:

  • 基于当前分支创建新分支

  • 自动切换到新分支

示例:

git checkout -b feature/user-login  # 创建并切换到 feature/user-login 分支

2. 仅创建分支(不切换)

git branch <新分支名>

示例:

git branch hotfix/header-bug  # 创建 hotfix/header-bug 分支(仍处于当前分支)

3. 基于特定提交/分支创建

git checkout -b <新分支名> <源分支或提交ID>

示例:

git checkout -b release/v1.2 develop  # 基于 develop 分支创建 release 分支

4. 将本地分支推送到远程

git push -u origin <分支名>  # -u 设置上游分支

示例:

git push -u origin feature/user-login  # 推送并关联远程分支

二、合并分支

1. 基础合并(Fast-Forward)

git checkout main          # 切换到目标分支(如 main)
git merge feature/login    # 将 feature/login 合并到当前分支

适用场景:

  • 目标分支没有新提交时,Git 会直接移动指针(无冲突风险)

2. 非快进合并(生成合并提交)

git merge --no-ff feature/login  # 强制创建合并提交

优点:

  • 保留完整分支历史,便于追踪

  • 推荐:团队协作时使用

3. 合并冲突解决流程

当合并出现冲突时:

# 1. 查看冲突文件(文件中会标记 <<<<<<< ======= >>>>>>>)
git status

# 2. 手动编辑文件解决冲突,保留需要的代码

# 3. 标记冲突已解决
git add <冲突文件>

# 4. 完成合并提交
git commit -m "Merge branch 'feature/login' into main"

4. 取消合并

git merge --abort  # 终止合并,恢复合并前状态

三、合并方式对比

合并类型命令适用场景历史记录特点
Fast-Forward git merge 目标分支无新提交 线性历史,不显示合并分支
No-Fast-Forward git merge --no-ff 团队协作/需保留分支历史 生成合并提交,保留分支拓扑
Rebase git rebase 整理本地提交历史 线性历史,修改提交哈希

四、IDEA 中的可视化操作

1. 创建分支

  1. 右下角点击 Git Branches → New Branch

  2. 输入分支名 → 选择基于哪个分支创建

2. 合并分支

  1. 切换到目标分支(如 main

  2. 右键要合并的分支(如 feature/login) → Merge into Current

  3. 冲突时会弹出 Merge Conflicts 工具,可视化解决

3. 查看合并结果

  • Git → Show History:查看带分支拓扑的提交图

  • 右键提交记录 → Compare with...:对比分支差异


五、最佳实践建议

  1. 分支命名:

    • 使用 feature/hotfix/ 等前缀明确分支用途

    • 避免使用 updatetmp 等模糊名称

  2. 合并前检查:

    git diff <源分支> <目标分支>  # 预览差异
    git log --graph --oneline    # 查看提交历史
  3. 保护主分支:

    • 使用 --no-ff 合并到 main 或 develop

    • 推荐通过 Pull Request 代码评审后合并

  4. 清理废弃分支:

    git branch -d <分支名>   # 删除已合并的分支
    git branch -D <分支名>   # 强制删除未合并的分支
    git push origin --delete <远程分支名>  # 删除远程分支

六、典型工作流示例

通过以上命令和规范,您可以高效管理分支生命周期,减少协作冲突。

posted @ 2025-07-01 11:37  郭慕荣  阅读(944)  评论(0)    收藏  举报