4

在我的本地 GIT 存储库中,我有以下提交:

A --> B --> C --> D

(其中 D 是头部)

我想将 B 和 C 组合/压缩成一个提交。我怎么能那样做?

谢谢。

4

1 回答 1

8

使用这个命令:

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哈希的麻烦。

于 2012-08-21T14:53:01.440 回答