一、创建新分支
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 <远程分支名> # 删除远程分支
六、典型工作流示例
通过以上命令和规范,您可以高效管理分支生命周期,减少协作冲突。