它以这种方式工作:
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)
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)