在前面的章节中,我们已经学会了如何修改文件、使用 git add 暂存修改,以及通过 git commit 创建提交记录。接下来要学习的是 Git 中另一个非常重要的概念:分支(Branch)。
可以把 Branch 理解成一条独立的开发路线。假设一个项目当前已经可以正常运行,但你准备开发一个新的登录功能。如果直接在现有代码上修改,一旦新功能还没写完或者出现 Bug,就可能影响原本稳定的代码。更常见的做法是创建一个新的 Branch,在这个 Branch 上完成开发,确认没有问题后,再把它合并回主分支。
可以通过下面的路线图理解:
这里的 main 是项目的主分支,而 login-feature 是为了开发登录功能临时创建的新分支。
假设 main 当前有三个 Commit:A → B → C。从 Commit C 创建新 Branch 后,login-feature 继续产生 D 和 E,而 main 仍停在 C。
Commit D 和 E 都是在 login-feature 上完成的,因此不会直接影响 main。等登录功能开发完成后,再把这些修改合并回主分支即可。
为什么开发新功能时要使用 Branch?
Branch 的主要价值是把不同的工作隔离开。比如一个团队可以同时维护 main、feature/login、feature/payment 和 fix/profile-error 等不同开发路线。
一个开发者可以负责登录功能,另一个开发者可以处理支付功能,还有一个人可以修复用户页面的问题。大家可以分别在自己的 Branch 上工作,而不需要所有人同时直接修改 main。
即使只有一个人开发项目,Branch 仍然很有用。你可能正在尝试一个不确定能否成功的新功能,或者需要临时修复一个 Bug。使用 Branch 后,即使实验失败,也不会轻易破坏主分支中的稳定代码。
知识测验
什么是 main?
现在 GitHub 新建的 Repository 通常会使用:
main作为默认分支名称。
main 一般代表项目当前最主要的一条开发线。很多团队会希望 main 中的代码始终保持相对稳定,因此开发新功能时通常不会直接在 main 上修改,而是先创建一个新的 Branch。
当然,Branch 的名字并不是 Git 强制规定的。有些旧项目仍然可能使用:
master作为主分支名称。对于本教程,我们统一使用 main。
Branch 并不是复制整个项目
初学者有时会把 Branch 理解成“复制了一份项目”,但其实并不是这样。Git 不需要真的复制整个项目文件夹。Branch 更像是 Git 中一个指向某条开发历史的标记,因此创建 Branch 通常非常快。
你不需要为了每个 Branch 建一个这样的文件夹:
project-main
project-login
project-payment通常还是在同一个项目目录里工作,只是通过 Git 切换当前所在的 Branch。
练习
一个稳定的网站即将同时开发登录功能并修复支付页面错误。请说明为什么把两项工作都直接写在 main 上风险较高,并为它们各设计一个清楚的 Branch 名称。