我在GitHub上分叉了一个项目,推动了一些更改,并打开了一个拉取请求。维护者注销并在新提交中应用更改(而不是合并我的提交),因此提交图看起来像这样:
* 03a0687 (origin/master) frotz: Corrected MAN_PREFIX
| * 11d3e98 (HEAD, master, jleedev/master) frotz: Corrected MAN_PREFIX
|/
* 9c3dd1a yajl: use direct patch from Github.
显然,我必须重新绑定或强制更新我的本地分支。我是否必须强行推送到GitHub上的分支?我主要是因为强制更新不应该是自动的。当维护人员挑选出您的更改时,这是标准的事情吗?
答案 0 :(得分:8)
最简单的方法就是始终处理主题分支。这样你的forks master分支总是看起来像上游,所以一旦上游包含你的更改,你总是做同样的事情,只需删除你的主题分支。
如果上游合并您的更改,您的主分支和主题分支都包含相同的提交,您可以安全地删除主题分支。如果上游提交了您的提交,那么在验证更改后进入上游后,您可以删除主题分支。
这样做的另一个主要好处是,您可以轻松地将主题分支与主分支相关联。有时如果在没有手动冲突解决的情况下无法在上游应用补丁,他们会要求您自行修改或合并并进行冲突解决,因为它是您的代码并且您对此有更多了解。我还怀疑他们选择了你的提交,因为他们在你做了fork之后提交了,并且不想仅为少量提交引入合并提交。通过采摘樱桃,他们的历史更加线性和清洁。如果你经常重新定位,它可能只是他们的快速合并,他们不需要挑选。
关于你现在该做什么的问题,强制更新你的本地分支,然后强制推回你的分支是你唯一真正的选择。