2016-07-22 155 views
1

我犯了一個錯誤,所以我需要undo the last commit修復上次git commit的修復

通常的步驟是:

git reset --soft HEAD~ 
// make changes... 
git commit -c ORIG_HEAD 

不過,我偶然這樣做:

git reset --soft HEAD~ 
// make changes... 
git commit -m "Some new message"  // <-- shouldn't have done this!! 

是否相同呢?如果不是,那會有什麼影響,我怎麼能(我應該?)「撤銷撤消」?

+1

這兩種情況都會創建一個提交,但在第一種情況下,您只需重用'ORIG_HEAD'中的日誌和作者信息。清楚的是,從功能上講,兩者都做出同樣的承諾。如果你不想要這個提交,則恢復它或者將其複製。 –

+0

@TimBiegeleisen如果它們是相同的,並且我保持原樣,那麼特殊的'ORIG_HEAD'會發生什麼,因爲我沒有使用它(並且假設我做了正確的事情,它會被刪除)。換句話說,如果我將來需要再次撤銷,那麼這個問題的存在會成爲一個問題嗎? –

回答

1

您的方式與原始論壇帖子中描述的方式之間的區別在於您使用新的作者和信息創建了新的提交。但是既然你是老提交者,反正這個也不會改變,如果你不改變這個信息。

如果你想刪除ORIG_HEAD你可以用下面的命令做到這一點:

rm -f $GIT_DIR/ORIG_HEAD 
# or 
rm -f .git/ORIG_HEAD 

它不會做你讓它有任何的傷害,但因爲它沒有好處。它可能是很好的將其刪除那裏。如果您要執行類似的操作,則只會被新的ORIG_HEAD覆蓋。

+0

我應該刪除'ORIG_HEAD'嗎?如果我需要在未來某個時候再次「撤銷」。 –

+0

「......它只會被覆蓋......」是的,這是我的想法,但不確定。謝謝。 –