1

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

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

我想获得文件的特定版本。这个版本是用一个数字指定的。目前我使用这个:

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

如果修订号 > 1,则:git show HEAD~n:path

但是,当我运行代码时,在某些情况下我会收到一条错误消息,例如:无效的对象名称:HEADn(其中 n 是一个数字)。在颠覆中,我使用了svn cat命令。

更新

由于我不断更新存储库,因此如果可能,我不想在修订时签出存储库。

4

2 回答 2

1

其他等效于的命令svn cat

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

请参阅指定修订以将 ref 替换为(SHA1、标签、分支……或者,当您使用时,<rev>~<n>, e.g. master~3

于 2013-02-10T07:29:38.390 回答
0

关于 git 要记住的主要一点是,一切都基于您的提交。提交哈希标识它,标签、分支只是标识提交的附加机制,尽管在分支的情况下它不是静态的,它会随着 HEAD 移动。

所以..为了检查特定修订版的文件,您只需要找到该修订版所在的提交,您可以查看特定文件的历史记录...

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

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

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

git checkout <hash>:<path>
于 2013-02-10T00:50:32.690 回答