Git branch
分支的基础操作
Section titled “分支的基础操作”1. 分支查看
Section titled “1. 分支查看”# 查看本地所有分支(当前分支前标 *)git branch
# 查看本地+远程所有分支git branch -a
# 查看分支的详细信息(最后一次提交、分支名等)git branch -v2. 分支创建
Section titled “2. 分支创建”# 方式1:仅创建分支(不切换)git branch 分支名 # 例:git branch feature/payment
# 方式2:创建并切换到新分支(最常用)git checkout -b 分支名 # 例:git checkout -b bugfix/login-error
# 方式3:基于指定提交/标签创建分支(进阶)git checkout -b 分支名 提交ID/标签名# 例:基于版本v1.0创建修复分支:git checkout -b bugfix/v1.0-fix v1.03. 分支切换
Section titled “3. 分支切换”# 切换到已有分支git checkout 分支名 # 例:git checkout main
# 新版 Git 推荐写法(功能等价)git switch 分支名 # 例:git switch feature/payment4. 分支推送(本地分支同步到远程)
Section titled “4. 分支推送(本地分支同步到远程)”# 首次推送新分支到远程(-u 绑定本地与远程分支)git push -u origin 分支名 # 例:git push -u origin feature/payment
# 非首次推送(已绑定)git push origin 分支名5. 分支拉取(远程分支同步到本地)
Section titled “5. 分支拉取(远程分支同步到本地)”# 拉取远程新分支到本地(本地无该分支时)git checkout -b 本地分支名 origin/远程分支名# 例:拉取远程的feature/payment到本地:git checkout -b feature/payment origin/feature/payment
# 拉取远程分支的最新代码(本地已有该分支)git pull origin 分支名6. 分支合并(将其他分支代码整合到当前分支)
Section titled “6. 分支合并(将其他分支代码整合到当前分支)”(1)基础合并(Fast-forward 快进合并)
Section titled “(1)基础合并(Fast-forward 快进合并)”适用于:目标分支是当前分支的直接延续(无分叉),合并后无冲突。
# 1. 先切换到要合并到的目标分支(比如主分支)git checkout main
# 2. 合并指定分支到当前分支git merge 待合并分支名 # 例:git merge feature/payment(2)非快进合并(No-ff,生成合并提交)
Section titled “(2)非快进合并(No-ff,生成合并提交)”git merge --no-ff 待合并分支名 -m "合并feature/payment到main:完成支付功能"(3)解决合并冲突
Section titled “(3)解决合并冲突”合并时若同一文件的同一位置被不同分支修改,会触发 “冲突”,需手动解决:
-
Git 会标记冲突文件,文件内显示冲突内容:
Terminal window <<<<<<< HEAD (当前分支的内容)主分支的代码内容=======待合并分支的代码内容>>>>>>> feature/payment (待合并分支) -
手动编辑文件,保留需要的内容,删除冲突标记(
<<<<<<</=======/>>>>>>>); -
提交解决后的代码:
Terminal window git add 冲突文件名git commit -m "解决合并冲突:整合支付功能与主分支代码"
7. 分支删除
Section titled “7. 分支删除”# 删除本地分支(需先切换到其他分支)git branch -d 分支名 # 例:git branch -d feature/payment# 强制删除未合并的分支(慎用)git branch -D 分支名
# 删除远程分支git push origin --delete 分支名 # 例:git push origin --delete feature/payment8. 分支重命名
Section titled “8. 分支重命名”# 重命名本地分支git branch -m 旧分支名 新分支名 # 例:git branch -m feature/pay feature/payment
# 推送重命名后的分支到远程(先删旧远程分支,再推新分支)git push origin --delete 旧分支名git push -u origin 新分支名三、分支的规范与最佳实践
Section titled “三、分支的规范与最佳实践”1. 常见分支模型
Section titled “1. 常见分支模型”| 分支类型 | 命名规范 | 用途 | 生命周期 |
|---|---|---|---|
| 主分支 | main/master | 存放生产环境可用的稳定代码 | 永久 |
| 开发分支 | develop | 日常开发的集成分支 | 永久 |
| 功能分支 | feature/xxx | 开发新功能(如 feature/pay) | 临时,合并后删 |
| 修复分支 | bugfix/xxx | 修复开发分支的 bug(如 bugfix/login) | 临时,合并后删 |
| 热修复分支 | hotfix/xxx | 修复生产环境的紧急 bug(如 hotfix/order-crash) | 临时,合并后删 |
| 发布分支 | release/xxx | 预发布测试(如 release/v1.2) | 临时,合并后删 |
2. 分支使用原则
Section titled “2. 分支使用原则”- 主分支(main)不直接开发:所有修改必须通过分支合并,保证主分支永远可运行;
- 分支粒度要小:一个分支只做一件事(比如一个功能、一个 bug 修复),便于管理和合并;
- 及时同步主分支代码:在分支开发时,定期从
main/develop合并最新代码,减少后期冲突; - 命名语义化:避免用 “test1”“dev2” 等无意义名称,一眼能看出分支用途;
- 及时清理无用分支:功能合并后,删除本地和远程的临时分支,保持仓库整洁。