Git 分支是多人协作和并行开发的核心,我按「基础常用 → 合并核心 → 远程协作 → 进阶管理」的顺序整理所有常用操作,附说明和最佳实践:
📌 一、基础分支操作(日常高频使用)
1. 查看分支
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| git branch
git branch -a
git branch -r
git branch -v
git branch --merged
git branch --no-merged
|
2. 创建分支
1 2
| git branch feature/login
|
💡 新分支是基于当前所在分支的最新提交创建的,和当前分支代码完全一致。
3. 切换分支
1 2 3 4 5
| git switch feature/login
git checkout feature/login
|
4. 创建 + 切换分支(一步完成,最常用)
1 2 3 4 5
| git switch -c feature/pay
git checkout -b feature/pay
|
90% 的场景都是用这个命令:创建新分支并立刻切过去开发。
5. 删除分支
1 2 3 4 5
| git branch -d feature/login
git branch -D feature/login
|
🔗 二、分支合并核心操作
1. 普通合并(merge,最常用,保留合并历史)
把目标分支的代码合并到当前分支:
1 2 3 4 5
| git switch main
git merge feature/login
|
✅ 特点:会生成一个「合并提交」,完整保留两个分支的开发历史,适合公共分支合并。
👉 合并选项
1 2 3 4 5
| git merge --no-ff feature/login
git merge --ff-only feature/login
|
2. 变基合并(rebase,线性历史,更干净)
把当前分支的所有提交,"移动"到目标分支的最新提交后面,形成线性历史:
1 2 3 4 5
| git switch feature/login
git rebase main
|
✅ 特点:没有合并提交,历史是一条直线,非常干净;❌ 会修改提交历史,绝对不要在公共分支上使用,只适合自己的本地私有分支。
3. 解决合并冲突
合并/变基出现冲突时:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
git add 冲突文件名
git commit
git rebase --continue
git merge --abort git rebase --abort
|
🌐 三、远程分支协作操作(团队开发必备)
1. 推送本地分支到远程
1 2
| git push -u origin feature/login
|
-u 是 --set-upstream 的缩写,执行一次后,后续直接 git push 即可,不用再写分支名。
2. 拉取远程分支到本地
1 2 3 4 5 6
| git switch feature/login
git checkout -b feature/login origin/feature/login
|
3. 关联本地分支和远程分支
本地分支和远程分支断开关联时:
1
| git branch -u origin/feature/login
|
4. 删除远程分支
1 2 3 4 5
| git push origin --delete feature/login
git push origin :feature/login
|
⚙️ 四、进阶分支管理
1. 重命名分支
1 2 3 4 5
| git branch -m new-branch-name
git branch -m old-name new-name
|
2. 临时保存分支修改(切换分支前,代码没写完不想提交)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| git stash save "临时保存登录功能开发中"
git stash list
git stash pop
git stash apply stash@{0}
git stash drop stash@{0}
|
3. 摘取单个提交到当前分支
只把另一个分支的某一个提交拿过来,不需要合并整个分支:
⚠️ 分支最佳实践(新手必看)
- 永远不要直接在main/master分支开发,所有功能都在feature分支开发,合并到main
- 公共分支(main/develop)永远不要用rebase,只用merge,保留完整历史
- 分支命名规范:
feature/xxx(功能)、hotfix/xxx(线上修复)、bugfix/xxx(bug修复)
- 合并前先拉取远程最新代码,减少冲突概率
- 删除分支前先确认已经合并到主分支,避免代码丢失