当上游共同祖先是合并提交时,变基包括它在rebase中的祖先

时间:2017-12-11 21:33:34

标签: git git-rebase

我有点困惑。我有一个git历史如下(*表示合并提交):

A - B - C* - D - E - F* (master) - H* - I - J - K (feature)
         \                       /
          \- - - - - - - - - - G 

然后我运行了git rebase -i master feature,并在todo列表中将r放在commit G前面以保留它(同时更改提交消息)和s在其他一切之前将它们压在一起。我希望得到这个:

                       Y (feature), containing G', H', I', J', K'
                      / 
A - B - C* - D - E - F* (master)

相反,我得到了这个:

                   X (feature), containing F`?, G', H', I', J', K'
                  /
A - B - C* - D - E - F* (master)

我认为X包含F'以及G' - K',因为它有来自该合并的更改,并且因为rebase为其提供了与F'相同的作者,一位只出现的作者在XDF*

这里出了什么问题?这是因为git rebase忽略了合并提交,因此它不会接受合并提交作为<upstream><branch>参数的共同祖先吗?正在运行git log master..K只会显示提交G - K

避免这种情况的正确方法是什么?我在其他地方读过,-i-p标志不能同时使用。

更新

对于它的价值,我已经包含了git log图表的屏幕截图。随着时间的推移,绿色和黄色的线条最终会加入,粉红色线条的早期加入。

enter image description here

0 个答案:

没有答案