跳转到内容

Git branch

Terminal window
# 查看本地所有分支(当前分支前标 *)
git branch
# 查看本地+远程所有分支
git branch -a
# 查看分支的详细信息(最后一次提交、分支名等)
git branch -v
Terminal window
# 方式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.0
Terminal window
# 切换到已有分支
git checkout 分支名 # 例:git checkout main
# 新版 Git 推荐写法(功能等价)
git switch 分支名 # 例:git switch feature/payment

4. 分支推送(本地分支同步到远程)

Section titled “4. 分支推送(本地分支同步到远程)”
Terminal window
# 首次推送新分支到远程(-u 绑定本地与远程分支)
git push -u origin 分支名 # 例:git push -u origin feature/payment
# 非首次推送(已绑定)
git push origin 分支名

5. 分支拉取(远程分支同步到本地)

Section titled “5. 分支拉取(远程分支同步到本地)”
Terminal window
# 拉取远程新分支到本地(本地无该分支时)
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 快进合并)”

适用于:目标分支是当前分支的直接延续(无分叉),合并后无冲突。

Terminal window
# 1. 先切换到要合并到的目标分支(比如主分支)
git checkout main
# 2. 合并指定分支到当前分支
git merge 待合并分支名 # 例:git merge feature/payment

(2)非快进合并(No-ff,生成合并提交)

Section titled “(2)非快进合并(No-ff,生成合并提交)”
Terminal window
git merge --no-ff 待合并分支名 -m "合并feature/payment到main:完成支付功能"

合并时若同一文件的同一位置被不同分支修改,会触发 “冲突”,需手动解决:

  1. Git 会标记冲突文件,文件内显示冲突内容:

    Terminal window
    <<<<<<< HEAD (当前分支的内容)
    主分支的代码内容
    =======
    待合并分支的代码内容
    >>>>>>> feature/payment (待合并分支)
  2. 手动编辑文件,保留需要的内容,删除冲突标记(<<<<<<</=======/>>>>>>>);

  3. 提交解决后的代码:

    Terminal window
    git add 冲突文件名
    git commit -m "解决合并冲突:整合支付功能与主分支代码"
Terminal window
# 删除本地分支(需先切换到其他分支)
git branch -d 分支名 # 例:git branch -d feature/payment
# 强制删除未合并的分支(慎用)
git branch -D 分支名
# 删除远程分支
git push origin --delete 分支名 # 例:git push origin --delete feature/payment
Terminal window
# 重命名本地分支
git branch -m 旧分支名 新分支名 # 例:git branch -m feature/pay feature/payment
# 推送重命名后的分支到远程(先删旧远程分支,再推新分支)
git push origin --delete 旧分支名
git push -u origin 新分支名
分支类型命名规范用途生命周期
主分支main/master存放生产环境可用的稳定代码永久
开发分支develop日常开发的集成分支永久
功能分支feature/xxx开发新功能(如 feature/pay临时,合并后删
修复分支bugfix/xxx修复开发分支的 bug(如 bugfix/login临时,合并后删
热修复分支hotfix/xxx修复生产环境的紧急 bug(如 hotfix/order-crash临时,合并后删
发布分支release/xxx预发布测试(如 release/v1.2临时,合并后删
  1. 主分支(main)不直接开发:所有修改必须通过分支合并,保证主分支永远可运行;
  2. 分支粒度要小:一个分支只做一件事(比如一个功能、一个 bug 修复),便于管理和合并;
  3. 及时同步主分支代码:在分支开发时,定期从 main/develop 合并最新代码,减少后期冲突;
  4. 命名语义化:避免用 “test1”“dev2” 等无意义名称,一眼能看出分支用途;
  5. 及时清理无用分支:功能合并后,删除本地和远程的临时分支,保持仓库整洁。