轻松的Git壁球方式?

时间:2012-03-27 10:31:59

标签: git git-rebase

我经常这样做:

git add -u
git commit

...发现错误,修复它......

git add -u
git commit -m "Fix typo"

有没有一种简单的方法可以将第二次提交压缩回第一次?有时候我可以用git rebase -i来做,但有时候我会收到一条关于更新的消息。

注意我只是在谈论我没有推送第一次提交的情况。基本上我想使用第一个日志消息,但具有两个提交的组合效果。我可以使用git commit --amend来做这些事吗?

这个相关的问题处理了这个问题: git: squash/fixup earlier commit

最好的答案是一岁,我想知道事情是否有所改善?

3 个答案:

答案 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功能。

http://technosorcery.net/blog/2010/02/07/fun-with-the-upcoming-1-7-release-of-git-rebase---interactive---autosquash/

答案 2 :(得分:0)

是的,您可以修改之前的提交。

git add typointhisfile
git commit -vm

或者,如果您已经创建了2个提交 - 您可以使用以下内容创建一个:

git rebase -i HEAD~2

将其中一个压入另一个。

你最好(IMO),首先防止问题。为此,我建议总是做冗长的提交:

git commit -v

在编写提交消息之前 - 浏览要提交的更改的差异,如果看到需要更正的内容,则关闭编辑器。关闭而不输入提交消息将中止提交。

养成习惯,犯错误修正的必要性几乎消失。