Git 如何为pull请求设置默认fork?

Git 如何为pull请求设置默认fork?,git,github,pull-request,git-fork,Git,Github,Pull Request,Git Fork,我有一套关于我公司API的文档,基于优秀的API。按照指示,我将他们的回购协议分叉,并开始定制它。那叉子还活着 令人讨厌的是,当我的组织中的贡献者执行新的拉取请求时,Github“比较更改”屏幕上的“基本fork”默认为TripIt的存储库,而不是我的fork。他们不止一次向错误的地方发送拉取请求。告诉人们“不要那样做”不是一个特别可靠的解决方案。如何将PRs的默认位置设置为my fork?您的其他开发人员似乎已经将TripIt的存储库设置为fork,因此这是他们工作的来源/父级。 事实上,如果

我有一套关于我公司API的文档,基于优秀的API。按照指示,我将他们的回购协议分叉,并开始定制它。那叉子还活着


令人讨厌的是,当我的组织中的贡献者执行新的拉取请求时,Github“比较更改”屏幕上的“基本fork”默认为TripIt的存储库,而不是我的fork。他们不止一次向错误的地方发送拉取请求。告诉人们“不要那样做”不是一个特别可靠的解决方案。如何将PRs的默认位置设置为my fork?

您的其他开发人员似乎已经将TripIt的存储库设置为fork,因此这是他们工作的来源/父级。 事实上,如果打开,您将看到它根本没有分叉(分叉计数为0)

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


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

GitHub跟踪通过其接口提供的fork,并假设pull请求将用于该原始存储库。您需要告诉GitHub,您的副本不是一个fork,而是一个具有相同历史记录的常规存储库。遗憾的是,GitHub并没有提供一种取消选中fork链接的好方法。我通常是这样解决的:

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

  • 删除GitHub上的存储库

  • 使用完全相同的名称在GitHub上创建存储库。确保它是一个空存储库(不要创建
    自述文件
    许可证
    文件。)

  • git将所有内容推回到存储库中。(您可能需要切换到每个分支并按下它,还可能需要
    git push--tags


  • 脆弱的:此方法将丢失现有的GitHub问题并获取请求注释。如果您大量使用这些,这种方法可能是个坏主意,您应该提供帮助。

    不幸的是,GitHub没有提供配置默认PR目标回购的方法

    如果你可以删除(或者让所有者删除)原始的回购协议A,而B是从中派生出来的,那么就可以了

    如果不可能/不同意删除A,但A的所有者愿意执行以下操作,则至少在GitHub Enterprise上,分叉链接会断开:

    • 将回购A标记为私人
    • 重新将回购A标记为公开
    这样做之后,回购B(最初由A派生)将默认为针对自身的期初PRs,而不是A


    注:如果A本身是从历史上更久远的地方衍生出来的,那么不幸的是,一旦A退出,B似乎就开始拖欠针对该回购的期初PRs。唯一的解决方案是将上述内容应用于叉树中的所有上游回购:(

    是否需要保留到上游的链接(=TripIt的基本叉)?因为据我所知,你使用TripIt回购协议来记录你自己公司的代码。对吗?你不是公司范围内对上游的贡献吗?如果你只需要回购协议来记录你自己公司的文档,你可以只克隆回购协议,而不是分叉回购协议。如果你克隆它,就没有上游的链接,所有的请购单都指向你的源代码n、 然后,origin是您的PR的默认值,完全符合您的需要。我完全支持DIY,但github支持非常擅长处理这一点,这将是我在这里的第一选择。@robrich您如何合并原始slate回购的更改?(如果有新版本)@TomFox:我通常会在本地克隆中添加两个远程源。
    git添加远程源https://my.github.repo/...
    git添加远程上游https://their.github.repo/...
    。这样,当我想从他们的系统更新时,我
    git拉上游主控
    git推原始主控
    ,将他们的更改放入我的f实际上,我已经按照上面建议的方法进行了操作,所以在回购协议修复后,您会看到它。不过,谢谢:)