2011-08-27 120 views
70

如果您想將提交移到暫存區域 - 即不提交併將其中的所有更改移入臨時區域(有效地將分支置於提交之前的狀態) - 你怎麼做呢?或者是你不能做的事情?如何在git中將提交移動到臨時區域?

我知道該如何做的最接近的方法是將提交中已更改的所有文件複製到其他位置,在提交之前將分支重置爲提交,然後嘗試移入暫存區域,將所有複製的文件移回存儲庫,然後將它們添加到暫存區域。它的工作原理,但它不是一個很好的解決方案。我希望能夠做的就是取消提交併將其更改轉移到暫存區域。可以做到嗎?如果是這樣,怎麼樣?

回答

132
git reset --soft HEAD^ 

這會將您的索引重置爲HEAD ^(前一個提交),但將您的更改保留在暫存區域中。

裏有git-reset文檔

如果您使用的是Windows,你可能需要使用這種格式一些有用的圖表:

git reset --soft HEAD~1 
+15

如果什麼都不做,嘗試'混帳重置--soft HEAD〜 1'這意味着同樣的事情,但也適用於Windows。 –

+5

澄清,代字符和卡洛代表git版本中的不同事物。 HEAD〜1總是跟在提交的第一個父代之後,如果它是具有多個父代的合併提交,它可能不是您想要的。關於Windows cmd shell,你只需要用另一個carot例如「git reset --soft HEAD ^^」返回到「HEAD ^」。這純粹是Windows cmd shell的工件,所以如果您在Windows上使用git GUI,則不必這樣做。 Tilde和Carot在http://schacon.github.io/git/git-rev-parse#_specifying_revisions中解釋 – ahains

相關問題