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. 创建分支
-
右下角点击 Git Branches → New Branch
-
输入分支名 → 选择基于哪个分支创建
2. 合并分支
-
切换到目标分支(如
main) -
右键要合并的分支(如
feature/login) → Merge into Current -
冲突时会弹出 Merge Conflicts 工具,可视化解决
3. 查看合并结果
-
Git → Show History:查看带分支拓扑的提交图
-
右键提交记录 → Compare with...:对比分支差异
五、最佳实践建议
-
分支命名:
-
使用
feature/、hotfix/等前缀明确分支用途 -
避免使用
update、tmp等模糊名称
-
-
合并前检查:
git diff <源分支> <目标分支> # 预览差异 git log --graph --oneline # 查看提交历史 -
保护主分支:
-
使用
--no-ff合并到main或develop -
推荐通过 Pull Request 代码评审后合并
-
-
清理废弃分支:
git branch -d <分支名> # 删除已合并的分支 git branch -D <分支名> # 强制删除未合并的分支 git push origin --delete <远程分支名> # 删除远程分支
六、典型工作流示例
通过以上命令和规范,您可以高效管理分支生命周期,减少协作冲突。
郭慕荣博客园


浙公网安备 33010602011771号