从特定版本号的git存储库中获取文件

时间:2013-02-10 00:24:13

标签: git svn

我有一个Git存储库,其中只有一个分支提交文件。我只是使用这些命令:

git init
git add -A
git commit -m "msg"

我想获得该文件的特定修订版。此修订版用数字指定。目前我用这个:

如果修订总数为1:git show HEAD:path

如果修订号是> 1,然后:git show HEAD~n:path

但是,当我运行代码时,在某些情况下我会收到类似以下内容的错误:无效的对象名称:HEADn(其中n是数字)。在subversion中,我使用了svn cat命令。

更新

由于我不断更新存储库,如果可能的话,我不想在修订版本中签出存储库。

2 个答案:

答案 0 :(得分:1)

等同于svn cat的其他命令:

git cat-file blob ref:path/to/file
git show ref:path/to/some/file.cs.

请参阅Specifying Revisions替换参考号(SHA1,标签,分支......或者,正如您使用的那样,<rev>~<n>, e.g. master~3

答案 1 :(得分:0)

要记住关于git的主要事情是,一切都是基于你的提交。提交哈希标识它,标记,分支只是识别提交的其他机制,但是在分支不是静态的情况下,它随HEAD一起移动。

所以..为了在特定版本中签出文件,你只需要查找修订版本的提交内容,你可以用这个查看特定文件的历史...

git log --no-merges --oneline -- <path>

或者如果您使用Git Extensions或其他GUI,将会有一个文件历史记录命令来直观地显示。

一旦你知道提交哈希是什么,你就可以使用

签出文件
git checkout <hash>:<path>