git show 不理解相对文件名

git show 不理解相对文件名

我正在使用 git 对系统上的配置文件进行版本控制。我的文件系统根目录下有 git root /,我控制/etc/root

当我进入/root并执行:时git log .zshrc,它会显示提交历史记录。我想显示.zshrc特定提交的内容:

# git show a100e3515779a900509b52230d449a6446fa110b:.zshrc     
fatal: Path 'root/.zshrc' exists, but not '.zshrc'.
Did you mean 'a100e3515779a900509b52230d449a6446fa110b:root/.zshrc' aka 
'a100e3515779a900509b52230d449a6446fa110b:./.zshrc'?

# git show a100e3515779a900509b52230d449a6446fa110b:/root/.zshrc
fatal: Path '/root/.zshrc' exists on disk, but not in 

# git show a100e3515779a900509b52230d449a6446fa110b:root/.zshrc

# git show a100e3515779a900509b52230d449a6446fa110b:./.zshrc

只有最后 2 个命令有效。为什么.zshrc不起作用/root/.zshrc,为什么我必须使用最不方便的符号,例如./.zshrc

是否有一些我可以更改的配置选项,以便 git 理解.zshrc/root/.zshrc

答案1

<rev>:<path>表示法中,路径是相对于树状对象本身,而不是相对于当前目录,除非它以./或开头../。在这两种情况下…:/…,都不支持绝对路径 ( ),仅支持相对路径。

git show a100e3515779a900509b52230d449a6446fa110b:.zshrc

意思是“找到a100e3515779a900509b52230d449a6446fa110b对象,并在该对象内部,向我显示该.zshrc文件”。将 a100e3515779a900509b52230d449a6446fa110b 视为某种存档;它独立于您的当前目录而存在,并且没有您当前目录的概念。

据我所知,在这种情况下,您无法更改配置选项来git show理解。.zshrc./.zshrc

文档gitrevisions了解详情。

相关内容