如何更改 GitHub 上的基础分支?

How can I change base fork on GitHub?

我已经 fork 一个 repo 来创建一个新项目。新项目现在是独立的,我想在创建PR时默认将base fork更改为head fork,以避免出错。

如何在 GitHub 上执行此操作?

如果您想从原始上游存储库中 "disassociate" 您的复刻,以便 (a) 它不再显示为上游项目的 "fork" 并且 (b) 拉取请求将默认对抗自己的master而不是上游master,你可以:

  1. 确保您在本地拥有存储库的完整副本。
  2. 删除 github 上的项目。
  3. 在 github 上用相同的名称重新创建项目。
  4. 将您的本地存储库推送到 github。

就是这样。您将不再可以选择针对上游项目提交拉取请求,但也许这就是您想要的。上述步骤的替代方法是简单地创建一个名称为 new 的项目,然后将您的代码推送到那里。将分叉的项目保留在适当的位置将保留您向上游提交 PR 的能力,如果您在将来的某个时候需要这样做的话。

如果你想把这个项目变成你自己的,有两种方法可以做到。

正确的方法:

联系 github support. This is the right way and the best way as they usually reply within hours. (Check out forks 获取有关分叉的信息)

不太正确的方法:

创建一个新的存储库并从分叉的存储库中添加内容。

  • 第 1 步:git clone --bare https://github.com/Your/<Forked Repository>.git
  • 第 2 步:转到您的 github 帐户并删除分叉的存储库。
  • 第 3 步:创建同名的新存储库
  • 第 4 步:cd <Forked Repository>/
  • 第 5 步:git push --mirror

此解决方案维护原始存储库中的所有内容,包括提交历史、分支等。

此外,这不需要您在推送新存储库之前删除原始存储库,因此如果您的计算机出现问题,您也不会丢失任何东西:)

如果您查看 GitHub 项目的设置,有一个部分:

在 'duplicate the repository' 的 link 之后,我们得到 here,它告诉我们要做什么。

我在此处编写步骤,但您可以在该页面上查看更多选项。

To duplicate a repository without forking it, you can run a special clone command, then mirror-push to the new repository.

第 1 步:在 GitHub 上创建新存储库。

为新的重复存储库创建另一个存储库。

第 2 步:创建存储库的裸克隆

$ git clone --bare https://github.com/exampleuser/old-repository.git

第 3 步:镜像推送到新存储库

$ cd old-repository.git
$ git push --mirror https://github.com/exampleuser/new-repository.git

第 4 步:删除您在第 2 步中创建的临时本地存储库。

$ cd ..
$ rm -rf old-repository.git

就是这样!现在您可以删除原始存储库(尽管我建议仅附加 old- 并更新自述文件和描述),并确保记得重新克隆正确的存储库!

如果您想保留原来的名称,完成后只需重命名即可。