麦式参考 MickerBook Reference

分支

Branch

也常被叫作:分支线并行版本线独立改动线

你可能会这么说

「在同一个项目里开一条独立的线,随便折腾,不碰那条稳定的主线。」

分支 Branch

在同一个项目里开一条独立的改动线,折腾坏了也不碰主线。

分支(branch)就是在同一个项目里开一条平行的线。主线(通常叫 main)保持稳定、永远可用;你要做新功能或修 bug 时,开一条新线,在线上随便折腾,改坏了也不会影响主线。

这对「用 AI 改东西」的人尤其重要:AI 经常改着改着就把别的功能弄坏了。如果它直接在主线上改,坏了你只能回滚整个项目;如果它开分支改,主线始终完好,坏的只在分支上,把这条分支扔掉就行。

你不用理解分支的底层原理,记住三件事就够:开一条线(git switch -c 分支名)、切回主线(git switch main)、合并完删掉(git branch -d 分支名)。分支名要起得能看出用途,比如 fix-login、add-export,别叫 test 或 1。

长什么样 真实可交互,不是截图

主线 main(稳定)开分支改新功能改坏了?主线没事
git switch -c 修登录页
git switch main
git branch
✓ 分支隔离:分支上折腾,主线不动
✕ 全在主线改:出事时没有退路

分支是「活的线」,不是「复制一份文件夹」:两边共享同一份历史,改完能合并回来。关键是隔离真的存在——在分支上改的东西,切回主线看不到。

拆开看,里面有这几块

  1. 1
    主线 Main

    默认的稳定线,永远保持可用。未完成的东西不该出现在这里。

  2. 2
    当前分支 HEAD

    你现在在哪条线上干活。git branch 里带 * 的那个就是。

  3. 3
    分支名 Branch name

    要能看出用途:fix-login、add-export。叫 test、1、abc 等于没写。

  4. 4
    分支指针 Branch pointer

    分支本质是「指到某个提交的箭头」。开分支 = 从当前点拉一条新线。

常见的有哪几种

开新分支git switch -c

从当前点新建一条线并切过去。之后的改动都记在这条线上。

用在:开始一个新功能或修 bug

切分支git switch

在不同线之间切换。切之前工作区最好干净,否则改动会跟着跑。

用在:从分支回到主线、或换一条分支干活

删分支git branch -d

合并完成后清理分支。用小写 -d,改动没合进去时它会拒绝删除,防止误删。

用在:分支的活已经合并进主线

容易搞混?这样区分

分支 复制一份项目文件夹 Copy folder

复制文件夹是快照:复制那一刻的静态内容,之后两边的改动互不相通。分支是活的线:两边共享同一份历史,改完能合并回来。判断方法:复制的两份能自动合并吗?不能,那就是复制。

分支 直接在主线上改 Work on main

在主线上改,改动立刻进入「所有人都认为可用」的那份代码;开分支改,未完成的东西不污染主线。判断方法:改到一半发现思路错了,主线受不受影响?不受,才是分支。

看 直接在主线上改

什么时候用得上

新功能开发

给新功能开一条线(如 add-export),做完合并、删分支,主线始终干净。

让 AI 大胆试方案

让 AI 开分支实验一种写法,不行就扔掉整条分支,主线无损。

多件事并行

修 bug 一条线、加功能一条线,互不干扰,各自合回主线。

你可以这样跟 AI 说

直接复制下面这段,把【】里的换成你的情况。它比一句「帮我加个 X」多说清楚了:改哪里、不许动啥、做完交什么。

【任务】给 [项目目录] 的新功能 [功能名] 开一条独立分支,在分支上开发,不碰主线 main
【范围】只做分支的创建、切换、合并与删除,不改动业务代码本身的写法
【边界】
  - 主线保持稳定:任何未完成、未验证的东西都不允许提交到主线
  - 分支名用能看出用途的英文短名(如 fix-login / add-export),禁止 test / 1 / abc
  - 每次切分支前先跑 git status 确认工作区干净;有未存档的改动先问我怎么处理
  - 没有经过我确认,不要删除任何分支
【交付】
  1. 用 git switch -c 分支名 创建并切换,把分支名和执行结果贴给我
  2. 完成后贴出 git branch 列表,标出当前在哪条分支
  3. 告诉我切回主线的命令(git switch main),需要删除分支时给出命令(git branch -d 分支名),由我确认后再执行

分支的价值只有在「隔离是行为不是说法」时才成立。这段要求了分支名规范、切分支前确认工作区干净、删除要经确认——都是让「在分支上改」这件事可以被亲手验证。

它说「做好了」,你怎么自己验

这是本站的重头戏。AI 最会的不是写代码,是说「已完成」。这一条,它通常最多做到「运行时」这层:真的跑起来了,能在本机看到结果。

要亲眼看到这些,才算数

  • 跑 git branch,能看到那条分支存在,且当前分支有 * 标记。
  • 切到分支上改一个文件,再切回主线,打开文件确认主线的文件没变——隔离是真的,不是嘴上说说。
  • 让 AI 演示「合并后删除分支」:git branch -d 能成功,说明改动确实合进了主线(改动没合进去时 -d 会拒绝删除)。
  • 把分支名念出来:fix-login 还是 test?名字看不出用途,说明没认真起。

它常这么糊弄你

  • 「分支建好了」——但 git branch 里什么都没有,只是嘴上说了。
  • 「在分支上改的」——切回主线文件也跟着变了,说明根本是在主线上改的。
  • 「分支删掉了」——用的是大写 -D 强删,分支上没合并的改动直接没了。
  • 分支名乱起(test、1、abc)——这条线是干嘛的,三个月后没人知道。

分支操作能验到「运行时」层:命令真实执行、隔离真实存在,本地就能亲手验证。要提到「生产」层,还需要远程协作里的分支保护规则(谁有权合并到主线)这类管理机制。

考考你 选一个你觉得对的

AI 说「新功能我在独立分支上改,主线不受影响」。你怎么最快验证这是真的?