我对 Git 相当陌生,我正在尝试压缩一系列较早的提交,但是我在将这种“压缩”反射(reflect)到所有分支时遇到了问题。

我从以下树开始:

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

我想“挤压”提交 C、D、E 和 F,但我希望这种“挤压”同时反射(reflect)在分支 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)

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

提前致谢。

最佳答案

好的,这比我评论中的 cherry-pick 答案要好,因为如果您对 cherry-pick 进行了大量提交,这可能会相当乏味(它还避免了创建第三个分支)。

最快的方法是两个 rebase 。第一个是您指定的那个。然后你 checkout 分支 2 并在你已经存在的 rebase d 分支 1 之上重新建立它,删除你不想要的提交( CDEFGH )。所以基本上,你有:

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

您已经这样做了,然后是:
git checkout <branch 2>
git rebase -i <branch 1>

当您的默认编辑器打开时,只需通过 C 删除与提交 H 关联的行。结果将是您要查找的内容。

关于Git - 压缩较早的提交并将其反射(reflect)在不同的分支上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33481660/

10-15 17:07