我对 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 之上重新建立它,删除你不想要的提交( C
、 D
、 E
、 F
、 G
和 H
)。所以基本上,你有:
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/