如何设置拉取请求的默认分叉?

时间:2015-07-22 20:33:01

标签: git github pull-request git-fork

我根据优秀的Slate framework from TripIt为我公司的API提供了一套文档。根据说明,我分叉他们的回购并继续定制它。那个叉子住了here

令人讨厌的是,当我的组织中的贡献者做一个新的拉取请求时,"基础叉"在Github"比较变化"屏幕默认为TripIt的存储库,而不是我的fork。他们不止一次将拉请求发送到错误的地方。告诉别人"不要这样做"不是一个特别可靠的解决方案。如何设置PRs基于叉子的默认值?

3 个答案:

答案 0 :(得分:7)

GitHub会跟踪通过其界面创建的分支,并假设拉取请求将针对该原始存储库。您需要告诉GitHub您的副本不是分支,而是恰好具有相同历史记录的常规存储库。可悲的是,GitHub没有提供一个好方法来取消勾选fork链接。我通常以这种方式解决它:

  1. 克隆存储库git pull,确保您的本地副本完全是最新的。

  2. 删除GitHub上的存储库。

  3. 使用完全相同的名称在GitHub上创建存储库。确保它是一个空的存储库(不要创建READMELICENSE文件。)

  4. git push将所有内容重新放回存储库。 (您可能需要切换到每个分支并推送它,您也可能需要git push --tags。)

  5. FRAGILE :此方法会丢失现有的GitHub问题并提取请求评论。如果您大量使用这些方法,这种方法可能不是一个好主意,您应该contact GitHub customer support来帮助您。

答案 1 :(得分:2)

您的其他开发人员似乎已经分叉TripIt的存储库,因此这是他们工作的源/父。 事实上,如果你打开own repository,你会发现它根本没有分叉(分叉数为0)。

当他们发出合并请求时,默认情况下github会将该存储库显示为源,因此拉取请求不会发送给您。

在这种情况下,最简单的解决方法是让您的开发人员分叉您的存储库,并对其进行处理。

答案 2 :(得分:1)

不幸的是,GitHub没有提供一种配置默认PR目标存储库的方法。

如果您可以删除(或让所有者删除)从其分叉了B的原始存储库A,那么就可以解决问题。

如果无法删除删除A,但是A的所有者愿意执行以下操作,则fork链接至少在GitHub Enterprise上会断开:

  • 将存储库A标记为私有
  • 再次将存储库A标记为“公开”

执行此操作后,存储库B(最初是从A派生的)将默认为针对自身而不是A打开PR。

注意:如果A本身是从历史上更远的地方派生出来的,那么不幸的是,一旦A走了,B似乎开始默认针对该回购开放PR。唯一的解决方案是将以上内容应用于派生树中上游的所有存储库:(