9

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

场景

我正在开发一个基于原型的 Web 应用程序。我发现 1.7.1(不怪作者)有一些让我们烦恼的 bug。幸运的是,所有这些错误确实有一个公开可用的修复程序,该修复程序通过一个已被主分支接受的拉取请求。

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

我对此负责。由于我想跟踪我的公司应用于 Prototype 的更改(即使我是唯一会接触 JS 文件的人),我想以一种可以留给后代的有效方式进行。

Github 允许您将任何项目分叉到您自己的工作区中,以便您可以随心所欲地使用它。我想通过将它们实际链接到对原始项目提出的现有拉取请求来跟踪我导入 Prototype 的补丁。

一般问题

鉴于我在 Github 上分叉了一个通用开源项目,有什么方法可以找到一个拉取请求,提交到原始分支,然后选择在我自己的 fork 中“导入”它(考虑到文件应该是 diff-兼容),以便将其应用于我的分支?

当然,随着时间的推移,这让我可以跟踪记录(包括评论和讨论)我选择在我的分支中导入哪些PR,哪些我没有。

4

3 回答 3

3

鉴于我在 Github 上分叉了一个通用开源项目,有什么方法可以找到一个拉取请求,提交到原始分支,然后选择在我自己的 fork 中“导入”它(考虑到文件应该是 diff-兼容),以便将其应用于我的分支?

是的。这是我的做法:

  1. 将存储库 fork 到 myaccount/project
  2. 在本地克隆我的帐户/项目
  3. git remote add [remote name]用于具有您要使用的修复程序的每个遥控器。
  4. 运行git fetch --all以下载所有内容
  5. 用于git merge --no-ff -m [remote-name]/[branch-name]合并您想要包含在 fork 中的每个 Pull Request 的更改。--no-ff为审计能力创建一个合并提交,并-m让您在编辑器中指定消息(以便您可以在合并提交中包含指向拉取请求的链接)。
  6. 完成合并后,您可以使用git push已合并的各种拉取请求来更新 GitHub 上的分叉。
于 2014-01-12T11:00:41.643 回答
2

我选择性地添加拉取请求的工作流程如下:

  1. 首先做一个叉子。

  2. 然后在本地克隆 fork。

  3. 应用来自 Pull Request 的补丁。

    • 因此,例如,如果您的拉取请求位于以下网址上:

    https://github.com/mafintosh/peerflix/pull/188

    • 您可以像这样从 url 创建和下载手动补丁文件:

    https://github.com/mafintosh/peerflix/pull/188.patch.

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

所以工作流程变成这样:

$ wget https://github.com/mafintosh/peerflix/pull/188.patch

$ git am 188.patch

如果你想在申请master之前在一个分支上测试它

那么与应用任何其他补丁相同的规则适用于它。

1. Create a Branch.
2. Apply the patch 
3. Test the Patch.
4. Merge to master.
于 2020-06-06T17:03:35.250 回答
0

我找到了其他两种方法。

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

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

例如,如果我选择一个我喜欢的 PR,我可以将git cherry-pick [commit]每个提交用于 PR,修复可能出现的冲突

于 2015-07-13T09:01:54.070 回答