从Git恢复文件?

时间:2009-07-28 11:30:27

标签: git crash restore

问题与问题"How to restore Git after fatal file system error?"有关,但与单个文件有关。

我需要进入最后状态2009-07-27 23:58,我需要文件:

/Users/henri/BAckup/6-relationdiagram/Normalized_perhaps_DB/simple_schema0.tcuml

如何在崩溃后恢复文件?

ADDED:我在哪里可以找到该文件?他们应该做什么?

格雷厄姆的提示

$git checkout 63c6844fded9cfcdee14c9330be82557046b3e56 HENRI_suunnittelu_doc/6-relaatiotietokantakaavio/Normalized_perhaps_DB/simple_schema0.tcuml

威廉的提示

git checkout bee6763b55cf8259438aa575cedbb09d1d02b96a  HENRI_suunnittelu_doc/6-relaatiotietokantakaavio/Normalized_perhaps_DB/simple_schema0.tcuml

3 个答案:

答案 0 :(得分:4)

如果您需要从存储库中的提交中获取单个文件,那么git checkout将为您执行此操作。具体做法是:

git checkout <sha> <filename>

将检索文件&lt; filename&gt;来自提交&lt; sha&gt;进入你当前的工作副本。可以是对任何提交的任何引用,因此它可以是分支名称,标记名称,HEAD ^^^^,或者任何你想要的东西...

答案 1 :(得分:2)

有时我删除了我的git local中的文件或目录,我想只恢复该文件。我运行以下命令:

 git checkout -- filenameOrDirectory

注意两者之间的空格。

答案 2 :(得分:1)

您是否在任何地方都有未经破坏的存储库副本?如果是这样,请从那里拉到您的工作目录,然后签出文件。你可以这样做:

git log --since='2009-07-27 23:58' --pretty=oneline -n 1

获取您想要的哈希值,然后通过以下方式获取文件:

git checkout <file> <hash>

如果您没有未经破坏的存储库工作副本,您可以尝试'git fsck',但如果文件丢失,您的成功几率很小或为零。