2010-11-16 34 views
5

我對存儲庫中的特定文件進行了一些更改並提交了這些更改。所有在一個承諾之下。將Git中的更改卸載到特定文件中

在那一個提交中,我還對其他幾個文件進行了更改。我如何取消我對一個特定文件所做的更改,而不是所有在提交中更改的文件?

+13

如果有人真的在尋找如何「撤銷添加」,並且不會丟失對該文件所做的本地更改,那麼「git reset HEAD path/to/file.ext」是要做的事情。 「git checkout」實際上會刪除你對本地最後一次提交狀態的未經改動的更改。 – 2011-02-09 08:27:42

回答

14

Unstage是不完全正確的這裏的詞 - 指的是從索引(暫存區)中刪除更改,暗示它們尚未提交。

由於您的修改已經提交,你會問如何做的是從以前的簽出文件的版本提交:

git checkout HEAD^ path/to/file 

HEAD是當前提交和HEAD^是第一HEAD的父項。

7

如果您還沒有任何地方推提交:

$ git checkout HEAD^ path/to/revert 

這將恢復你想恢復到它在作爲事先提交狀態的路徑。 (這將恢復在過去所做的任何更改提交你做。)

該指數也將被更新,所以現在你只需要修改你的承諾:

$ git commit --amend