我在 GitHub 上 fork 了一个项目,推送了一些更改,并打开了一个 pull 请求。维护者签署并在新提交中应用更改(而不是 merge 我的提交),因此提交图如下所示:
* 03a0687 (origin/master) frotz: Corrected MAN_PREFIX
| * 11d3e98 (HEAD, master, jleedev/master) frotz: Corrected MAN_PREFIX
|/
* 9c3dd1a yajl: use direct patch from Github.
显然,我必须 rebase 或强制更新我的本地分支。然后我必须强制推送到我在 GitHub 上的分支吗?我问的主要是因为强制更新不应该是自动的。当维护者精心挑选您的更改时,这是标准做法吗?
最佳答案
最简单的事情就是始终在主题分支上工作。这样你的 forks 主分支总是看起来像上游,所以一旦上游包含你的更改,你总是做同样的事情,只需删除你的主题分支。
如果上游 merge 了您的更改,您的主分支和主题分支都包含相同的提交,您可以安全地删除主题分支。如果上游挑选了您的提交,那么在验证对上游所做的更改后,您可以删除主题分支。
这样做的另一个主要好处是您可以轻松地根据 master 对主题分支进行 rebase 。有时,如果没有手动解决冲突就无法在上游应用补丁,他们会要求您 rebase 或 merge 并自己解决冲突,因为这是您的代码并且您对它了解更多。我还怀疑他们精心挑选了您的提交,因为他们在您创建 fork 后已经提交并且不想仅为少量提交引入 merge 提交。通过精心挑选,他们使自己的历史更加线性和清晰。如果您经常进行基址调整,那么对他们来说可能只是快速 merge ,他们不需要挑选。
至于你现在要做什么的问题,强制更新你的本地分支然后强制推回你的分支是你唯一的选择。
关于git - 当 cherry pick 了 pull request 时我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5147847/