了解分叉工作流
分叉工作流与其他常用 Git 工作流基本不同。
它不使用单一服务器端存储库充当“中央”代码库,而是为每个开发人员提供其服务器端存储库。
这意味着每个参与者都有两个 Git 存储库:
- 一个专用本地 Git 存储库。
- 一个公共服务器端 Git 存储库。
分支工作流最常出现在公共开源项目中。
分支工作流的主要优点是,可以集成贡献而无需每个人都推送到单个中央存储库。
开发人员推送到其服务器端存储库,只有项目维护人员才能推送到官方存储库。
它允许维护者接受来自任何开发人员的提交,而无需授予他们对官方代码库的书面访问权限。
分支工作流通常用于合并到原始项目维护者的存储库中。
结果是分布式工作流,为大型有机团队(包括不受信任的第三方)提供了一种灵活的方式来安全地协作。
这也使其成为开源项目的理想工作流。
工作原理
与其他 Git 工作流一样,分叉工作流从存储在服务器上的官方公共存储库开始。
但是,当新开发人员想要开始处理该项目时,他们不会直接克隆官方存储库。
相反,他们会分叉官方存储库,以便在服务器上创建它的副本。
这个新副本作为他们的私人公共仓库——其他开发人员不能推送到它,但他们可以从中拉取更改(我们将稍后了解为什么这是必要的)。
创建服务器端副本后,开发人员会执行 git 克隆,将副本复制到本地计算机上。
它充当其专用开发环境,就像在其他工作流中一样。
当他们准备好发布本地提交时,会将提交推送到其公共存储库,而不是官方存储库。
然后,他们向主存储库提交拉取请求,使项目维护者知道更新已准备好集成。
如果贡献的代码存在问题,为了方便,拉取请求也可用作讨论线程。
下面是此工作流的分步示例:
- 开发人员“分叉”一个“官方”服务器端存储库。 它会创建其服务器端副本。
- 新的服务器端副本已复制到他们的本地系统。
- “官方”存储库的 Git 远程路径将添加到本地克隆。
- 将创建新的本地功能分支。
- 开发人员对新分支进行更改。
- 为更改创建新提交。
- 分支将推送到开发人员的服务器端副本。
- 开发人员从新分支向“官方”存储库提交拉取请求。
- 拉取请求获得合并批准,并合并到原始服务器端存储库中。
将该功能集成到官方代码库中:
- 维护人员将参与者的更改拉取到其本地存储库中。
- 检查以确保它不会影响项目的正常运行。
- 将其合并到其本地主分支中。
- 将主分支推送到服务器上的官方存储库。
贡献现在是项目的一部分,其他开发人员应从官方存储库拉取来同步其本地存储库。
必须了解,分叉工作流中“官方”存储库的概念只是一种约定。
唯一使官方存储库被视为官方的原因是,它是项目维护者的存储库。
分叉与克隆
必须注意,分叉存储库和分支行为不是特殊操作。
分叉存储库是使用标准 git 克隆命令创建的。 通常,派生库是由 Git 服务提供商(例如 Azure Repos)管理和托管的“服务器端克隆”。
没有用于创建分支存储库的唯一 Git 命令。
克隆作实质上是存储库及其历史记录的副本。