如何在git repo的特定状态下显示文件的内容?

时间:2010-03-23 01:52:34

标签: git

我想显示由git repo的特定状态的路径给出的文件的内容。我没试成功:

git show f825334150cd4bc8f46656b2daa8fa1e92f7796d:Katana/source/Git/GitLocalBranch.h
fatal: ambiguous argument
'f825334150cd4bc8f46656b2daa8fa1e92f7796d:Katana/source/Git/GitLocalBranch.h': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions

有问题的提交未修改指定的文件。如何在给定状态下显示文件的内容(由提交哈希指定),无论文件在提交中的参与情况如何?

2 个答案:

答案 0 :(得分:31)

您的路径规范可能存在问题。

这样可以在提交b1b22df407417...

中显示Makefile的版本
git show b1b22df407417:Makefile

或主分支中的当前版本

git show master:Makefile

或者现在的版本中的当前版本:

git show exper:Makefile

或者必需的早期版本:

git show exper^:Makefile

等等

答案 1 :(得分:5)

您正在使用的语法与git show联机帮助页的示例中显示的匹配,但git似乎暗示您应该指定如下:

# I _don't_ think this is your answer...
git show f825334150 -- Katana/source/Git/GitLocalBranch.h

我肯定用于git log并且在其联机帮助页中。

我的直觉,告诉我你使用绝对路径而不是git工作树顶部的路径。您需要确保.git目录位于Katana/source/Git/.git,然后在.git之前切断所有内容,如下所示:

git show f825334150:GitLocalBranch.h

如果你想在git工作区外面显示一个git blob,你需要做这样的事情:

GIT_DIR=Katana/source/Git git show f825334150:GitLocalBranch.h

这将告诉git它可以在哪里找到您的存储库的数据。

底线:仔细检查您的路径并确保它们是正确的。如果您没有从git工作区内运行命令,则可能需要设置GIT_DIR