0

我正在尝试做的事情:

我完成了一个功能。

git add -A; git commit -m "feature A complete"

然后我意识到我错过了一些东西。

git add -A; git commit -m "feature A missed something 1"
git add -A; git commit -m "feature A missed something 2"
git add -A; git commit -m "feature A missed something 3"

现在我的历史看起来像这样:

A238ad1 feature A missed something 3
3238adX feature A missed something 2
1238ad7 feature A missed something 1
111AAA2 feature A complete

我希望它看起来像这样:

111AAA2 feature A complete

将所有missed something提交合并到feature A complete提交中。

我知道git rebase -i HEAD~4这是正确的方法,但它实际上并没有删除错误的提交来清理历史。

我注意到在其他一些文章中有一个git commit --fixup命令和一个git rebase -i --autosquash,但我没有让它正常工作。我敢肯定这非常容易,我今天刚搞定。

4

1 回答 1

1

在这种情况下,使用交互式变基

这可以使用启动

git rebase -i 

后跟您要包含的头像数

git rebase -i HEAD~5

whereHEAD~5表示最后 5 次提交

然后,您可以使用更多选项将您的提交压缩为一个并编辑消息。只是代替pick选项squash

壁球

所以在这里你看,我改变了选项picks它是squash. 当我保存并关闭此文件时,将启动交互式 rebase,并且我指示用于压缩的提交将被压缩为21b4e04 Fixed missing bad practice. 压缩后,它会要求您输入新的提交消息。输入您的新消息并点击enter,您就完成了。

于 2016-08-01T22:38:18.897 回答