2012-03-27 48 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