如何在Git中检出一个特定版本的文件?

如何在git中查看一个特定版本的文件?

我在邮件列表中发现了这封邮件 ,其中说:

$ git checkout HEAD~43 Makefile $ git reset Makefile 

但是我不明白怎么find'HEAD〜43',如果我做了一个git log aFile ,怎么才能知道'HEAD〜43'应该用什么?

为什么我需要为该文件运行git reset ? 它有什么作用?

你知道该文件属于什么提交(即:特定的修订版)? 然后做:

 git checkout <commit> <file> 

另一个命令:

 git checkout HEAD~N <file> 

是为了当你想从一个范围内获得文件的版本(我为怀旧)。

HEAD〜43只是树,所以你可以使用一个哈希或标签。 你必须用--分隔文件名,否则将被视为文件名。 例如。

 git checkout v0.45 -- filename git checkout HEAD^ -- filename git checkout 16bb1a4eeaa9 -- filename 

HEAD~43引用文件的提交(版本)。 取而代之的是,你可以使用从文件上的git log获得的提交散列。 如果你只是想要这个文件,你不需要运行git reset就可以了。 只有当你想将文件转发到当前的HEAD时才有必要。