2016-08-03 18 views
0

我一直在練習git checkout -- somefile.txt來檢出git文件,萬一我搞砸了。 Git如何知道從哪個提交中檢出哪個文件?我寫git checkout -- index.html。 Git如何知道從哪個提交中獲取index.html,特別是當您的提交列表變得越來越大時?git在使用checkout時如何知道要簽出哪個文件 - somefile?

+0

爲了澄清,你的意思是'git checkout - index.html',空格或'git checkout --index.html',沒有空格嗎? – hugomg

+0

更改爲間隔 – developer098

回答

3

git checkout與路徑一起使用但未指定提交將從索引(即暫存區域)中檢出文件。例如,如果您已對文件進行了某些更改,然後進一步對其進行了修改,並且只想撤消這些更改,則可以使用git checkout -- some/path撤銷這些更改。

如果您的索引是乾淨的,即使用git status時沒有任何報告顯示正在執行,則索引將等於HEAD(即當前簽出的分支(或提交))。所以這也是一種撤消更改的方法。

當然,指定git checkout的提交將始終使用來自該確切修訂版的文件版本,而不管您的索引如何。

+3

其實這是錯誤的(我起初以爲同樣的事情):'git checkout - some/path'從索引*中檢出版本*,而不是從'HEAD'提交。在很多情況下,這些都是相同的底層blob,所以它沒有任何區別。 – torek

+0

@torek你是絕對正確的,我通常只會在寫作答案時考慮清楚索引的情況,儘管我每天都使用checkout來取消未分離的更改。謝謝! – poke

相關問題