当我试图以交互方式将多个提交重新定址(挤压)为一个提交时,它只挤压最后两个提交,因此我最终不得不多次挤压。
我正在使用源码树,但我已经尝试在控制台中执行此操作,并获得相同的结果。有什么想法吗?
发布于 2015-12-06 14:12:03
试一下-
$ 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中做同样的事情-
http://kwnetzwelt.net/wordpress/archives/2440
发布于 2015-12-06 17:55:31
(交互式)rebase技术上一次只压缩两个提交--很简单,因为所谓的"rebase脚本“通常被要求在git rebase
进行之前编辑,一次只对一个提交应用一个操作。
然而,这不会改变结果,因为从逻辑上讲,一次压缩N个提交和逐个提交之间没有区别。在你的rebase脚本中,你只需要为一系列相邻的提交选择动作"squash“(也可以阅读”fixup“--它通常比”squash“更方便),然后git rebase
就会这样工作:
git apply
).注意,还有git merge
的--squash
命令行选项。这一次真的一次压缩了几个提交。
发布于 2015-12-06 14:24:56
假设您的分支指向您想要挤压的最后一个提交,您可以使用此技巧:
git reset --soft <some older commit>
git commit --amend
现在您已经用一个新的<some older commit>
替换了它,它包含了两者之间的所有内容,以及它们的内容。
https://stackoverflow.com/questions/34114601
复制相似问题