如何在git中检出一个特定版本的文件?
我找到了这个邮件列表上的帖子,其中写道:
$ git checkout HEAD~43 Makefile
$ git reset Makefile
但是我不明白如何找出'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 时才需要运行该命令。
43 语法(在 git-rev-parse 中有记录),请就此问题提问,而不是关于您已知答案的无关问题。 “HEAD45 是什么意思,如何找到特定版本的文件” - Jakub Narębski