我们有以下情况:
master ------A X------------Y
\ / \ /
\ / \ /
\ / \ /
--B- \ /
\ \ /
C---------D
Jane在A处创建了一个FB,然后在X处合并了。
[Bob在B处创建了FB C,做了一些工作,再次从master处拉出,并在D处创建了PR,然后在Y处合并。
在GitHub中,Jane的PR仅正确显示了A和X之间的更改,并被合并回master。
在GitHub中,鲍勃的PR显示了[[A和Y之间的所有变化,这不是我们期望的。我们认为,因为Bob从X合并到D的FB,所以他的PR将仅包括其分支和X之间的更改,这就是他的分支与主服务器之间的current差异。
我们缺少明显的东西吗?git fetch
切换到功能分支C:
git checkout feature-branch-c
在来源/母版上运行交互式基础:
git rebase -i origin/master
将提示您更改
历史记录,请小心;):这将包含您在github PR中看到的相同提交。现在,您可以使用
pick 2feec74 message1 pick 2xxxx m2 pick 2xxxx m3 pick xxxx m4
d
作为前缀,从而删除不需要的提交,如下所示:pick 2feec74 message1
d 2xxxx m2 (The commit you want to drop)
d 2xxxx m3 (The commit you want to drop)
pick xxxx m4
保存文件,现在您可以再次按下,但由于更改了历史记录,因此需要使用标志-f
。
git push -f