我有一个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
命令。
由于我不断更新存储库,如果可能的话,我不想在修订版本中签出存储库。
答案 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>