2012-09-30 69 views
57

我在學習Git。我很困惑git rm - 緩存文件vs git重置文件

之間

git rm --cached file 

git reset file 
兩個命令似乎採取從上演未上演區的文件。這些命令如何不同?

+2

可能的副本[git rm --cached asd \'和\'git reset head - asd \'有什麼區別](http://stackoverflow.com/questions/5798930/whats-the- git rm -cached-asd-and-git-reset-head-asd) – Undistraction

回答

77

git rm --cached <file>將從索引中完全刪除文件的內容。這意味着在提交時,該文件將從HEAD提交中刪除。 (如果文件僅添加到索引中,但尚未被跟蹤,則這是「無操作」)。

git reset -- <file>重置索引中文件的內容與頭提交相同。這意味着在提交時不會更改將被提交到該文件。如果在HEAD提交中沒有跟蹤的文件版本,則此操作無效。

+3

也許作爲一個補充:'git rm --cached'會將文件的* delete *動作添加到索引,只是像'git add'會添加一個* add *動作。 – poke

+0

索引==分段區域?如果文件位於索引中,是不是通過擴展名進行跟蹤? – ataulm

+0

對於git reset - ,HEAD提交中應該有該文件的跟蹤版本。如果新文件被添加到索引中,那麼頭部提交中將沒有跟蹤版本 –