我可以将多个提交压缩在一起,并保留最后一个的消息吗?

问题描述 投票:-1回答:2

有时我是git rebase -i master,并且有这种情况:

pick cc1ed9d First commit
pick 9d4090c Main commit with detailed message
pick fca9df4 WIP afterthought commit with bad message

通过将最后一行的pick更改为fixup,我将其压缩到主提交中,并且新的合并提交使用了主提交的好消息。

但是有时顺序不同:

pick cc1ed9d First commit
pick fca9df4 WIP preliminary commit with failing test
pick 9d4090c Main commit with detailed message

在这里,我想将最后两个提交压缩在一起,但保留最后一个的消息。

我可以通过费力的复制和粘贴来做到这一点,但是有简单的方法吗?

git git-rebase
2个回答
0
投票

您可以稍作更改。如果您将pick(aka p)更改为squashs)而不是fixupf),则Git将以相同的方式合并提交的更改,但不会自动保留第一次提交的消息将显示您的文本编辑器。其中将提供一个建议的提交消息,该消息将所有连续压缩的提交的消息连接在一起,您可以从中编辑到想要保留的任何内容。

为了公平起见,这不会100%自动仅保留最后一次提交的消息,但是可以避免提到的“费力的复制和粘贴”!

基本上将fixup视为squash,而无需进行额外的编辑消息,因此,从fixup更改为squash,您可以获得完整的压榨体验(lol)。


0
投票

交互式rebase旨在提供很多选项,如果您已经完全知道要执行的操作,请执行以下操作:

git reset --soft @~2; git commit -C @{1}

使用一个干净的索引来压缩最后两个提交,同时保留提示提交的消息。

© www.soinside.com 2019 - 2024. All rights reserved.