Git - 压缩早期提交并在不同的分支上反映它

时间:2015-11-02 15:55:04

标签: git

我对Git很新,而且我正在尝试压制一系列早期的提交,但是我在所有分支上都有这种'挤压'的反应时遇到了问题。

我从以下树开始:

A---->B---->C---->D---->E---->F---->G---->H (Branch 1)
                                          \
                                           \
                                            \
                                             I---->J---->K (Branch 2)

我想'压缩'提交C,D,E和F,但我希望这种'挤压'能够反映在分支1和分支2上。

我尝试了'git rebase -i HEAD~7'并进行了必要的更改(在分支1上),但这就是我的结果:

A---->B---->C'---->G---->H (Branch 1)
      \
       \
        \
         C---->D---->E---->F---->G---->H---->I---->J---->K (Branch 2)

当我想得到的是:

A---->B---->C'---->G---->H (Branch 1)
                          \
                           \
                            \
                             I---->J---->K (Branch 2)

我做错了什么?有没有办法达到我想要的结果?

提前致谢。

1 个答案:

答案 0 :(得分:3)

好的,这比我的评论中的cherry-pick答案更好,因为如果你有很多提交cherry-pick的提交可能相当繁琐(它也避免了第三个分支的创建)。

最快的事情是两个rebase。第一个是你指定的那个。然后你checkout分支2并在你已经rebase d分支1的顶部重新绑定,删除你不想要的提交(CD,{{ 1}},EFG)。所以基本上,你有:

H

你已经做过,然后是:

git checkout <branch 1>
git rebase -i HEAD~7

当您的默认编辑器打开时,只需删除与提交git checkout <branch 2> git rebase -i <branch 1> C相关联的行。结果将是您正在寻找的。

相关问题