2012-03-27 89 views
2

我经常这样做:简单的方法来Git壁球?

git add -u 
git commit 

...发现错误,解决它...

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

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

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

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

最好的答案是一岁,虽然,我不知道,如果事情有了提升?

回答

6

这正是git commit --amend是。鉴于你的榜样,所有你需要做的是--amend标志添加到您的第二个承诺:

git add -u 
git commit 

...发现错误,解决它......

git add -u 
git commit --amend 

为此,您可以直观地在git gui也有(在“新提交”和“修改上次提交”之间切换的收音机框)

+0

有趣的 - 不知道'git gui'。我想知道为什么有这两个和gitk。 (争夺丑陋奖?:p) – 2012-03-27 10:51:08

+0

这两个有不同的目的:'git gui'用于提交,'gitk'用于查看和管理分支。请注意,您可以从'gitk'启动'git gui',反之亦然。 – 2012-03-27 11:42:19

0

是的,你可以修改以前的提交。

git add typointhisfile 
git commit -vm 

或者如果你已经创建2个提交 - 你可以让他们用一个:

git rebase -i HEAD~2 

只是压制它们的相互转化。

尽管如此,您还是比较好(IMO),首先防止出现问题。为此,我建议您还是做详细的提交:

git commit -v 

之前写的提交信息 - 脱脂的你要提交更改的差异,只是关闭编辑器,如果你看到你需要更正的东西。不输入提交消息而关闭会中止提交。

让它成为一种习惯,犯错误纠正的必要性将会消失。

+0

是的。我实际上做了大量的视觉检查(特别是git diff --cached)。仍然容易错过的东西。当然,你应该*经常提交。所以它没有任何意义,坚持承诺,直到一切都是完美的... – 2012-03-27 10:48:25

+0

承诺经常犯错是两件不同的事情@SteveBennett – AD7six 2012-03-27 10:49:34