切换·Esc 返回

分支Branch

Git 专区
从当前版本分出一条独立工作线,不直接影响主版本
先知道

分支让新功能或修复在不直接影响主线的情况下继续开发。完成并测试后,再通过合并 Merge合并请求 Pull Request合回主线;切换前要先检查未提交改动。

main
feature/new-nav
$ git switch -c feature/new-nav
分支是同一仓库里的平行版本线:从 main 的第 2 个存档点岔出去,两条线各存各的。新功能在分支上折腾,改坏了主线毫发无损,验证 OK 再合回来。

什么时候用

  • main 是主线:团队通常让它保持经过验证、可继续发布的状态
    main
  • 用 feature/new-nav 等可读名称说明分支用途
    feature/new-navfeature/dark-mode
  • git switch 切来切去:文件瞬间换成那条世界线的样子
    $ git switch mainSwitched to branch 'main'文件瞬间换成主线的样子
  • 做实验就开分支:折腾坏了整条删掉,主线毫发无损
    main
    feature

什么时候不用

  • 直接在 main 上让 AI 大改:改坏了连个好版本都没得回
    main
  • 分支起名 test1、aaa、新建分支2:三天后忘了谁是谁
    ⑂ test1
    ⑂ aaa
    ⑂ 新建分支2
    三天后忘了谁是谁
  • 以为没存档的改动会乖乖跟着切分支:会被挡住或带错地方,先 提交 Commit
    $ git switch mainerror: Your local changes would beoverwritten by checkout.没 commit 的改动会被挡住或带走
  • 分支上攒了几十版一直不合回主线:拖越久,合并 Merge 冲突越凶
    main
组成结构 · Anatomy
main
feature/new-nav
HEAD → 你现在在 feature/new-nav
1主线main常见的默认分支,通常保留已验证的改动;是否允许直接提交要看团队规则
2分叉点Base新分支从某个 commit 叉出去,起点是那一刻的快照
3功能分支Feature Branch按 feature/干啥的 命名,实验全在这条平行世界线上做
4当前位置HEAD你现在站在哪条分支上,git switch 移动的就是它
常见变体 · Variants
开新分支switch -c
git switch -c feature/new-nav
从当前位置叉出一条平行线
切回主线switch
git switch main
文件瞬间换成主线的样子
列出分支branch
git branch
看看现在有哪些世界线
删除分支branch -d
git branch -d feature/new-nav
合完就删,保持分支干净
典型使用场景
终端开新分支
zsh — my-first-page
$ git switch -c feature/new-nav Switched to a new branch 'feature/new-nav' 从当前位置叉出一条平行世界线
GitHub 分支下拉切换
my-first-pagePublic
⑂ main ▾
切换分支
✓ main 默认
 feature/new-nav
查看所有分支(2)
VS Code 左下角分支名
<nav class="top-nav">
  <a>首页</a>
</nav>
feature/new-nav⊘ 0 ⚠ 0Ln 3, Col 1
写代码前瞄一眼左下角:你现在站在哪条世界线上
GitHub 分支列表页
你的分支
⑂ main默认2 小时前更新
⑂ feature/new-nav5 分钟前更新New pull request