我在github上创建了一个项目,推送了一些更改,并打开了一个pull请求。维护人员签了名,并在新提交中应用了更改(而不是合并我的提交),因此提交图如下所示:
* 03a0687 (origin/master) frotz: Corrected MAN_PREFIX
| * 11d3e98 (HEAD, master, jleedev/master) frotz: Corrected MAN_PREFIX
|/
* 9c3dd1a yajl: use direct patch from Github.
很明显,我要么重新定位要么强制更新本地分支。那么,我需要在github上强制推我的叉子吗?我问的主要原因是强制更新不应该是自动的。当您的更改被维护人员选中时,这是标准的做法吗?
最佳答案
最简单的事情就是总是处理主题分支。这样,您的forks master分支总是看起来像upstream,因此一旦upstream包含您的更改,您就总是做同样的事情,只需删除您的主题分支。
如果上游合并了您的更改,则主分支和主题分支都包含相同的提交,您可以安全地删除主题分支。如果upstream cherry选择您的提交,那么在验证对upstream所做的更改之后,您可以删除主题分支。
这样做的另一个主要好处是,您可以轻松地根据master调整主题分支的位置。有时,如果没有手动解决冲突的方法,修补程序无法应用到上游,他们会要求您重新定位或合并,然后自己解决冲突,因为这是您的代码,而且您对它了解得更多。我还怀疑他们选择了您的提交,因为他们在您创建fork之后提交了,并且不想只为少量提交引入合并提交。通过采摘樱桃,他们保持了他们的历史更加线性和干净。如果你经常重新调整,对他们来说可能只是一次快速的合并,他们不需要选择。
至于你现在该怎么做的问题,强制更新你的本地分支,然后强制推回到你的分叉是你唯一的实际选择。