2011-07-08 56 views
115

我有幾個星期前做過的舊提交。我想從該提交中只恢復一個文件。我該怎麼辦?從git中的舊提交還原文件

+1

可能重複[使用Git重置或恢復特定文件到特定版本?](http://stackoverflow.com/questions/215718/reset-or-revert-a-specific-file-to-一個特定修訂使用git) –

回答

142
git checkout '[email protected]{7 days ago}' -- path/to/file.txt 

這不會改變的頭,它只是簡單地覆蓋本地文件path/to/file.txt

man git-rev-parse可能的修訂規格有(當然是一個簡單的哈希(如dd9bacb)會做很好)

不要忘了提交更改(在審覈後...)

+8

哇,@heneryville和sehe,我實際上認爲'7天前'是元你會找出什麼提交。 TY! – AnneTheAgile

+3

第2部分 當希望選擇特定的提交時,上述格式不起作用。相反使用下面顯示的Urs, git checkout commitShaNumber - path/to/file.txt per http://stackoverflow.com/questions/215718/how-do-i-reset-revert-a-specific-file -a-specific-revision-using-git – AnneTheAgile

+1

@AnneTheAgile事實上,它仍然是完全一樣的語法,我恰好給出了一個['revision-specification']的複雜例子。 kernel.org/pub/software/scm/git/docs/git-rev-parse.html),因爲這是OP所要求的:) – sehe

56
  1. 通過檢出舊提交中的文件。
  2. 根據需要添加,提交和推送。
+3

'git checkout'可以處理單個文件(請參閱sehe的答案),不需要複製和粘貼。 – Koraktor

+0

修訂密鑰是否始終是提交的SHA1? – IslandCow

+1

它們通常是SHA1的前6到8個字符,足以識別修訂版。 –