我正在使用 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
了解详情。