当我尝试以交互方式将几个提交重新绑定(压缩)为一个提交时,它只会压缩最后两个提交,因此我最终不得不多次进行压缩。
我正在使用源代码树,但我尝试从控制台执行此操作并获得相同的结果。有什么想法吗?
答案 0 :(得分:7)
尝试 -
$ git rebase -i HEAD~4
然后
pick 01d1124 commit msg 1
squash 6340aaa commit msg 2
squash ebfd367 commit msg 3
squash 30e0ccb commit msg 4
保存并退出编辑器
你可以在Sourcetree中做同样的事情 -
答案 1 :(得分:2)
(交互式)rebasing 技术上一次只压缩两次提交 - 仅仅因为所谓的" rebase脚本"通常会要求您在git rebase
收益之前进行编辑,同时将操作应用于单个提交。
然而,这并没有改变结果,因为从逻辑上讲,一次压缩N次提交或执行此提交提交之间没有区别。
在您的rebase脚本中,您只需选择动作"壁球" (也读了" fixup" -it'对于一系列相邻的提交,通常可能比#34; squash")更方便,然后git rebase
就像这样:
git apply
一样)。请注意,--squash
的{{1}}命令行选项也是如此。
这个实际上一次压制了几个提交。
答案 2 :(得分:1)
鉴于您的分支指向您想要压缩的最后一个提交,您可以使用此技巧:
git reset --soft <some older commit>
git commit --amend
您现在已将<some older commit>
替换为包含两者之间的所有内容的新timediff('date1','date2')
及其内容。
答案 3 :(得分:0)