设置分叉仓库的拉取请求默认分支

Jon*_*han 6 git git-fork azure-devops

背景:我在 VSTS 托管的 git 存储库中有一个“原始”项目,并想创建一个类似的项目,所以我分叉了该存储库。我无意从 fork 合并到原始 repo - 它们将是 2 个独立的项目。分叉 repo 的主分支策略需要拉取请求,没有直接推送。

现在,每当我创建这样的拉取请求时,默认目标不是 f​​ork>master 而是 original>master。我总是手动将其更改为 fork>master,但是很烦人...

问题:

  1. 如何设置 fork 存储库,以便拉取请求默认为 fork>master 分支?
  2. 如何将分叉的 repo 转换为“普通”repo,“忘记”原始 repo?

Mar*_*Liu 1

git fork repo 的目的是为上游(原始)repo 做出贡献。所以分叉的仓库和原始仓库之间总是有关系的

如果您想创建一个新的存储库(与原始存储库没有任何关系),但具有与原始存储库相同的代码和分支,那么您应该创建一个空的 git 存储库并将原始存储库中的所有分支推送到新创建的存储库而不是分叉原始存储库。详细步骤如下:

1. 在 VSTS 项目中创建一个新的 git 存储库

在 VSTS 网页中,创建一个新的 git 存储库。详细步骤,可以参考文档create a repo using web Portal

假设 git repo 名称为 myrepo,URL 为https://account.visualstudio.com/project/_git/myrepo

2. 在本地克隆并签出原始存储库中的所有分支

如果您尚未克隆原始 git 存储库,可以通过以下方式克隆原始 git 存储库:

git clone <original git repo URL>
Run Code Online (Sandbox Code Playgroud)

然后通过命令在本地检出所有远程分支:

git checkout <remote branchname>
Run Code Online (Sandbox Code Playgroud)

3.将本地原始repo的所有分支push到新创建的repo

在本地原始git repo中,为新创建的git repo添加remote,并将所有分支推送到新创建的git repo。详细命令如下:

#In the local original repo
git remote add myrepo https://account.visualstudio.com/project/_git/myrepo
git push myrepo --all
Run Code Online (Sandbox Code Playgroud)

现在所有分支都被推送到新创建的 git 存储库中,并且它与原始 git 存储库是分开的。

  • 如果分叉的目的是“为上游做出贡献”,那么为什么要使用分叉。我可以用一个分支来做到这一点。我分叉有很多原因。我有两个相关但必然独立的代码库。我想保留历史,但开始我自己的项目。我有我希望完成的长期专题工作。所有这些可能都需要我在准备好 PR 到上游之前很久就 PR 到分支的“主”或“开发”分支。要求能够更改默认 PR 目标是合理的。https://developercommunity.visualstudio.com/idea/365802/allow-option-of-converting-forks-to-repos.html (8认同)