有选择地输入其他人';s在您自己的Github fork中提取请求

有选择地输入其他人';s在您自己的Github fork中提取请求,git,github,pull-request,git-fork,Git,Github,Pull Request,Git Fork,好吧,我还没有找到更好的方式来命名我的问题。解释这个场景更容易。但是请记住,这是一个Github问题,不是一个原型JS问题(请不要为我添加标签) 情景 我正在开发一个基于原型的web应用程序。我发现1.7.1(不怪作者)有一些让我们恼火的bug。幸运的是,对我们来说,所有这些bug都有一个公共可用的修复程序,该程序通过一个已被主分支接受的请求进行修复 我的老板和我讨论了为我们发现的每个不兼容修补Prototype 1.7.1之间的选择,我们同意在即将投入生产的应用程序中使用“开发”版本不是最佳选

好吧,我还没有找到更好的方式来命名我的问题。解释这个场景更容易。但是请记住,这是一个Github问题不是一个原型JS问题(请不要为我添加标签)

情景 我正在开发一个基于原型的web应用程序。我发现1.7.1(不怪作者)有一些让我们恼火的bug。幸运的是,对我们来说,所有这些bug都有一个公共可用的修复程序,该程序通过一个已被主分支接受的请求进行修复

我的老板和我讨论了为我们发现的每个不兼容修补Prototype 1.7.1之间的选择,我们同意在即将投入生产的应用程序中使用“开发”版本不是最佳选择,因此我们的想法是修补Prototype的版本

我对此负责。因为我想跟踪我的公司应用于原型的更改(即使我是唯一一个接触JS文件的人),所以我想以一种可以留给后代的有效方式来做

Github允许您将任何项目转移到自己的工作区中,以便您可以随心所欲地使用它。我希望通过将补丁实际链接到对原始项目的现有请求来跟踪我导入到原型中的补丁

一般问题 考虑到我已经在Github上完成了一个通用的开源项目,我有没有办法找到一个提交给原始分支的pull请求,并选择在我自己的fork中“导入”它(考虑到文件应该是diff兼容的),以便将其应用于我的分支

当然,随着时间的推移,这使我能够保持关于我选择在我的分支中导入哪些而我没有导入的PRs的跟踪记录(包括评论和讨论)

考虑到我已经在Github上完成了一个通用的开源项目,我有没有办法找到一个提交给原始分支的pull请求,并选择在我自己的fork中“导入”它(考虑到文件应该是diff兼容的),以便将其应用于我的分支

对。我会这样做:

  • 将存储库转移到myaccount/project
  • 在本地克隆我的帐户/项目
  • 使用
    git-remote-add[remote-name]
    为每个具有要使用的修复程序的远程设备添加
  • 运行
    git fetch--all
    下载所有内容
  • 使用
    git merge--no ff-m[remote name]/[branch name]
    合并要包含在fork中的每个Pull请求的更改
    --no ff
    为审核功能创建合并提交,让您在编辑器中指定消息(这样您可以在合并提交中包含指向拉请求的链接)
  • 完成合并后,可以使用
    gitpush
    在GitHub上用合并的各种Pull请求更新fork

  • 我找到了另外两种方法

    由于PRs来自fork中的分支,因此我可以从任何作者的源分支开始在本地克隆/分支上创建自己的Pull请求。通过Github web UI进行编辑通常更容易,因为每次从UI编辑文件时,Github都会自动创建
    patch-x
    分支。正如@johndbritton所建议的,这基本上是我可以从控制台中完成的,但是可以从更简单的UI中完成

    最好的方法是使用
    git cherry pick
    手动执行提交。如果提交被隐藏,我可以幸运地选择一个提交


    例如,如果我选择了我喜欢的PR,我可以对PR中的每个提交使用
    git cherry pick[commit]
    ,修复可能出现的冲突

    我有选择地添加拉请求的工作流如下所示:

  • 首先做一个叉子

  • 然后在本地克隆fork

  • 应用拉取请求的修补程序

    • 例如,如果您的拉取请求位于url上,如:
    https://github.com/mafintosh/peerflix/pull/188

    • 您可以从url创建和下载手动修补程序文件,如下所示:
    https://github.com/mafintosh/peerflix/pull/188.patch

    .patch
    添加到url会在上创建补丁文件 GitHub

  • 因此,工作流程如下所示:

    $wgethttps://github.com/mafintosh/peerflix/pull/188.patch

    $git am 188.补丁

    如果要在应用到主节点之前在分支上进行测试

    然后应用与应用任何其他修补程序相同的规则

    1. Create a Branch.
    2. Apply the patch 
    3. Test the Patch.
    4. Merge to master.
    

    可能的副本可以在发布分支上选择提交,也可以合并只包含所需提交的分支,但分叉项目不会使应用/拒绝现有PRs或提交到当前版本变得更容易。这不是只有在分支仍然存在的情况下才行得通吗?我的意思是,在Github上:如果上游接受PR,它会给作者建议直接删除分支。