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

ric*_*ins 27 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
Run Code Online (Sandbox Code Playgroud)

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

ste*_*anB 32

这可能是您的路径规范的问题.

这工作,在提交中显示Makefile的版本 b1b22df407417...

git show b1b22df407417:Makefile
Run Code Online (Sandbox Code Playgroud)

或主分支中的当前版本

git show master:Makefile
Run Code Online (Sandbox Code Playgroud)

或者在exper分支中的当前版本:

git show exper:Makefile
Run Code Online (Sandbox Code Playgroud)

或者在exper分支上的先前版本:

git show exper^:Makefile
Run Code Online (Sandbox Code Playgroud)

等等


Mik*_*itz 5

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

# I _don't_ think this is your answer...
git show f825334150 -- Katana/source/Git/GitLocalBranch.h
Run Code Online (Sandbox Code Playgroud)

我肯定用过它,git log并在其手册页中.

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

git show f825334150:GitLocalBranch.h
Run Code Online (Sandbox Code Playgroud)

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

GIT_DIR=Katana/source/Git git show f825334150:GitLocalBranch.h
Run Code Online (Sandbox Code Playgroud)

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

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