在这种情况下,分叉的工作流程变得非常有吸引力(并且与 Github 配合得很好),它使用拉取请求将更改从开发人员的个人分叉发送回主存储库的存储库。
- 'origin' 远程点在服务器上开发人员的项目的个人分支(通常存储在他们在 Github 上的个人区域等)。
- 某些服务器上官方存储库中的“上游”远程点。
- 'development' 会定期合并到官方存储库中的 'master' 中(绝不会反过来)
- 官方存储库中的“开发”和“主”都应该始终干净地构建/测试。
- 开发人员基于开发创建一个本地分支来处理特定问题/故事的子集。
- 当代码准备好进行审查并通过所有测试时,他们再次将本地分支从开发中重新定位,然后
git push
分支到他们的私有分支存储库,并从他们的私有分支/分支创建一个拉取请求到主存储库/开发分支.
假设开发人员有一个名为“i903-description-of-issue”的分支(903 是我们的 github 问题编号),他们需要针对开发进行 rebase:
git fetch upstream
git checkout development
git merge --ff-only upstream/development
git checkout i903-description-of-issue
git rebase development
git push origin i903-description-of-issue
因此,开发人员负责确保他们的个人分支始终与主存储库上的官方“开发”分支保持一致(通过变基)。它使用拉取请求将多个提交一次合并到主“开发”分支中。Github(和其他工具)中的这种拉取请求模型允许在接受 PR 之前进行代码审查。
如果它是一个破坏性的功能分支,会破坏将“开发”分支持续部署到 QA 服务器的能力,那么您可能需要将新功能分解为破坏性较小的较小部分。