在我的本地 GIT 存储库中,我有以下提交:
A --> B --> C --> D
(其中 D 是头部)
我想将 B 和 C 组合/压缩成一个提交。我怎么能那样做?
谢谢。
使用这个命令:
git rebase -i A ;# where A is A's commit hash
在交互式编辑器中,更改行,应如下所示:
pick c7787af A
pick f9d9262 B
pick 6c363d0 C
pick 40f657d D
对此:
pick c7787af A
pick f9d9262 B
squash 6c363d0 C
pick 40f657d D
如果您希望放弃 C 的提交消息,但仍要压缩提交,请使用以下命令:
pick c7787af A
pick f9d9262 B
fixup 6c363d0 C
pick 40f657d D
永远不要对你已经与合作者共享的分支进行变基。该操作会更改 SHA1 哈希,并导致非快进更新。
正如 Jason 在评论中指出的那样,另一种语法是git rebase -i HEAD~4
. 当您将最近的历史重新定位到 squash 提交时(即,当很容易及时计算父母时),这避免了查找A
哈希的麻烦。