用分叉描述内部源

已完成

当用户想要更改存储库中的代码但他们对该存储库没有写入访问权限时,便会创建存储库分叉。

如果你没有写入访问权限,你不是为存储库做出贡献团队的一员,那么你为什么要修改代码存储库?

我们往往会寻找技术原因来改进工作中的某些方面。

你可能会找到一种更好的方法来实现解决方案或通过改进现有功能来增强功能。

可以在以下情况下创建存储库分叉:

  • 我想要进行更改。
  • 我认为这是一个令人兴奋的项目,可能希望使用它。
  • 我想使用该存储库中的一些代码作为我项目的起点。

鼓励软件团队在内部为所有项目做出贡献,而不仅仅是他们的软件项目。

分叉是培养内部开源文化的好方法。

分叉是 Azure DevOps Git 存储库的最新新增功能。

这个方案会指导你创建现有存储库的分支并通过拉取请求向上游贡献更改。

做好准备

分叉以其上游(原始)存储库的所有内容开头。

在 Azure DevOps 中创建分叉时,可以包含所有分支或将其限制为仅默认分支。

分叉不会复制被创建分叉的存储库的权限、策略或生成定义。

创建分叉后,除非启动拉取请求,否则不会在存储库之间共享新创建的文件、文件夹和分支。

拉取请求在任一方向上均受支持:从分叉到上游或上游到分叉。

拉取请求最常见的方法是从分叉到上游。

如何实现

  1. 选择“分叉”按钮 (1),然后选择要在其中创建分叉的项目 (2)。 为分叉命名,并选择“分叉”按钮 (3)。

  2. 分叉准备就绪后,使用命令行或 IDE(如 Visual Studio)克隆它。 该分叉将是你的原点远程库。 为方便起见,需要将上游存储库(创建分叉的位置)添加为名为 upstream 的远程库。 在命令行键入:

    git remote add upstream {upstream_url}
    
  3. 可以直接在主分支中工作,该分支是存储库的副本。 不过,建议你仍在主题分支中工作。 它允许你同时维护多个独立的工作流。 此外,以后想要将更改同步到分叉中时,这可以减少混淆。 像往常一样,进行更改并提交更改。 完成修改后,将它们推送到源(你的分支)。

  4. 打开从分叉到上游的拉取请求。 上游存储库将应用审阅者和生成所需的所有策略。 满足所有策略后,即可完成 PR,所做的更改会成为上游存储库的永久部分:
    显示“创建拉取请求”的示意图。

  5. PR 在上游被接受时,必须确保分支反映最新的存储库状态。 建议在上游的主分支上变基(假设主分支是主开发分支)。 在命令行上,运行:

    git fetch upstream main
    git rebase upstream/main
    git push origin
    

如需详细了解 Git,请参阅: