我经常这样做:
git add -u
git commit
...发现错误,修复它......
git add -u
git commit -m "Fix typo"
有没有一种简单的方法可以将第二次提交压缩回第一次?有时候我可以用git rebase -i
来做,但有时候我会收到一条关于更新的消息。
注意我只是在谈论我没有推送第一次提交的情况。基本上我想使用第一个日志消息,但具有两个提交的组合效果。我可以使用git commit --amend
来做这些事吗?
这个相关的问题处理了这个问题: git: squash/fixup earlier commit
最好的答案是一岁,我想知道事情是否有所改善?
答案 0 :(得分:6)
这正是git commit --amend
的用途。根据您的示例,您需要做的就是将--amend
标志添加到第二次提交中:
git add -u
git commit
...发现错误,修复它......
git add -u
git commit --amend
您也可以在git gui
中直观地进行此操作(有一个用于在“新提交”和“修改最后提交”之间切换的单选框)
答案 1 :(得分:1)
我发现的最好的是这篇文章,讨论了git 1.7中引入的autosquash功能。
答案 2 :(得分:0)
是的,您可以修改之前的提交。
git add typointhisfile
git commit -vm
或者,如果您已经创建了2个提交 - 您可以使用以下内容创建一个:
git rebase -i HEAD~2
将其中一个压入另一个。
你最好(IMO),首先防止问题。为此,我建议总是做冗长的提交:
git commit -v
在编写提交消息之前 - 浏览要提交的更改的差异,如果看到需要更正的内容,则关闭编辑器。关闭而不输入提交消息将中止提交。
养成习惯,犯错误修正的必要性几乎消失。