如何在git diff命令中显示相对路径?

Kir*_*rby 4 git git-diff

它以这种方式工作:

MYPC /d/home/project/some/path (master)
$ git diff --name-only --cached
root.txt
some/path/relative.txt
Run Code Online (Sandbox Code Playgroud)

即它显示了来自GIT根目录的路径,但是我需要来自当前目录的相对路径。

预期结果 :

$ git diff --name-only --cached --AND_SOME_OPTION
../../root.txt
relative.txt
Run Code Online (Sandbox Code Playgroud)

按照常识,它应该像一样工作git status

PS--relative选项不起作用,因为它将显示该目录中的文件。在我们的示例中,它将仅显示relative.txt

PPS

使用--git-dir效果不佳:

$ git --git-dir=$(git rev-parse --show-toplevel)/.git  diff --cached --name-only
root.txt
some/path/relative.txt
Run Code Online (Sandbox Code Playgroud)

Joa*_*ado 5

git status -s 已经输出了可以轻松隔离的相对路径。

如果需要使用git diff,可以将输出通过管道传输到realpath,如果可用:

$ git diff --name-only | \
    xargs -I '{}' realpath --relative-to=. $(git rev-parse --show-toplevel)/'{}'
../../root.txt
relative.txt
Run Code Online (Sandbox Code Playgroud)