实现分叉工作流
分支是存储库的副本。 通过创建存储库分叉,可自由地对更改进行试验,而不会影响原始项目。
分叉最常用于对其他人的项目提出更改。 或者使用其他人的项目作为自己创意的起点。
分叉是存储库的完整副本,包括所有文件、提交和(可选)分支。
分叉是支持内部源工作流的一种好方法:当你没有直接写入原始项目的权限时,可以创建一个分支来提出更改建议。
准备好共享这些更改后,便可以轻松使用拉取请求进行回馈。
分叉中有什么?
分叉以其上游(原始)存储库的所有内容开头。
创建分叉时,可以包含所有分支或将其限制为仅默认分支。
不会应用任何权限、策略或生成管道。
新分叉的行为类似于有人克隆了原始存储库然后将其推送到一个新的空存储库。
创建分叉后,新文件、文件夹和分支不会在存储库之间共享,除非拉取请求 (PR) 携带它们。
在分叉之间共享代码
可以在任一方向创建 PR:从分叉到上游或上游到分叉。
最常见的方法是从分叉到上游。
目标存储库的权限、策略、生成和工作项将应用于 PR。
在分支和分叉之间选择
对于小型团队(2-5 名开发人员),建议在单个存储库中工作。
每个人都应在主题分支中工作,并且主分支应受分支策略保护。
随着团队发展壮大,你可能会发现自己不再适合这种安排,而是更愿意切换到分叉工作流。
如果存储库有许多临时或不常用的提交(如开放源代码项目),建议使用分叉工作流。
通常,只有项目的核心参与者才拥有对存储库的直接提交权限。
如果你请求此核心人员组之外的协作者从存储库的分叉工作,将会有所帮助。
此外,它会将他们的更改与你的更改隔离开,直到你有机会审查工作。
分叉工作流
- 创建分叉。
- 在本地克隆它。
- 在本地进行更改,并将其推送到分支。
- 创建并完成对上游的 PR。
- 将分叉同步到上游的最新版本。
创建分叉
- 导航到存储库以创建分叉,然后选择分叉。
- 指定名称,然后选择要在其中创建分叉的项目。 如果存储库包含许多主题分支,建议仅创建默认分支的分叉。
- 选择省略号,然后选择“分叉”以创建分叉。
注意
必须在所选项目中拥有“创建存储库”权限才能创建分叉。 建议为分叉创建一个专用项目,其中所有参与者都拥有“创建存储库”权限。 有关授予此权限的示例,请参阅设置 Git 存储库权限。
在本地克隆分支
分叉准备就绪后,使用命令行或 IDE(如 Visual Studio)克隆它。 该分叉将是你的原点远程库。
为方便起见,克隆后,需要将上游存储库(创建分叉的位置)添加为名为 upstream 的远程库。
git remote add upstream {upstream_url}
进行更改和推送更改
可以直接在主分支中工作,毕竟,该分叉是存储库的副本。
不过,建议你仍在主题分支中工作。
它允许你同时维护多个独立的工作流。
此外,以后想要将更改同步到分叉中时,这可以减少混淆。
像往常一样,进行更改并提交更改。 完成更改后,将其推送到原点(分叉)。
创建并完成 PR
打开从分叉到上游的拉取请求。 所有策略、所需审阅者和生成都将应用于上游存储库。 满足所有策略后,即可完成 PR,所做的更改会成为上游存储库的永久部分。
重要
任何拥有“读取”权限的人员都可以打开对上游的 PR。 如果配置了 PR 生成管道,生成将针对分叉中引入的代码运行。
将分叉同步到最新
当上游已接受 PR 后,需要确保分叉反映存储库的最新状态。
建议在上游的主分支上变基(假设主分支是主开发分支)。
git fetch upstream main
git rebase upstream/main
git push origin
通过分叉工作流,可以将更改与主存储库隔离开,直到你准备好将其集成。 准备就绪后,集成代码就像完成拉取请求一样简单。