用过 Git 的人都知道,代码管理离不开分支和标签。可刚上手时,很多人搞不清这两者到底有啥区别,甚至觉得它们差不多。其实,它们在项目开发中扮演的角色完全不同。
分支是开发的主战场
你可以把分支想象成一条条独立的开发线。比如你正在做新功能,不想影响主程序,那就新建一个分支:feature/login。在这个分支上改代码、提交更新,完全不会干扰其他人。
团队协作时尤其明显。小李在改用户界面,小王在优化登录逻辑,两人各用各的分支,互不打扰。等各自完成,再合并到主分支 main 或 develop。这就是分支的核心作用:隔离变化,支持并行开发。
git checkout -b feature/user-profile
标签是项目的里程碑
标签不是用来写代码的,它是给某个特定版本“贴记号”。比如你刚刚发布了 1.0 版本,就把当前代码打个标签:
git tag v1.0
以后任何人想看这个版本的代码,直接切到 v1.0 就行。它就像书签,标记的是某个时间点的稳定状态。上线发布、版本回溯,靠的就是标签。
再举个生活里的例子:分支像你在写一本小说的不同草稿——爱情线重写一版,结局换个写法;而标签则是你每完成一个章节就存个档,方便以后回头找。
关键区别在哪?
分支是动态的,会随着提交不断往前走。你每天在 feature 分支上加新代码,它的最新位置一直在变。而标签是静态的,一旦打上,就永远指向那个提交,不会动。
删掉一个分支,最多影响开发进度;但删了标签,可能就丢了版本记录。所以标签更“稳”,分支更“活”。
实际工作中,主分支 main 上通常会有多个标签,代表 v1.0、v1.1、v2.0 这样的发布节点。而开发期间,几十个分支来回切换,都是常态。
怎么选?看用途
如果你要尝试一个 risky 的改动,建分支最安全。改坏了不影响别人,删了重来就行。如果你刚完成一次正式发布,记得打标签,不然下次谁也说不清哪个提交是上线版本。
简单说:分支用于过程,标签用于结果。