它以这种方式运作:
MYPC /d/home/project/some/path (master)
$ git diff --name-only --cached
root.txt
some/path/relative.txt
即。它显示了GIT根目录的路径,但我需要从当前目录开始的相对路径。
预期结果:
$ git diff --name-only --cached --AND_SOME_OPTION
../../root.txt
relative.txt
从常识来说,它应该像git status
一样工作。
P.S。
--relative
选项不起作用,因为它将显示此目录中的文件。
在我们的示例中,它仅显示relative.txt
。
P.P.S
使用--git-dir
也不起作用:
$ git --git-dir=$(git rev-parse --show-toplevel)/.git diff --cached --name-only
root.txt
some/path/relative.txt
答案 0 :(得分:4)
git status -s
已经输出了可以轻易隔离的相对路径。
如果您需要使用git diff
,则可以将输出传输到realpath
,如果可用的话:
$ git diff --name-only | \
xargs -I '{}' realpath --relative-to=. $(git rev-parse --show-toplevel)/'{}'
../../root.txt
relative.txt
答案 1 :(得分:0)
到目前为止,我没有找到使用git-diff
来使用相对路径的方法。
唯一适合我的方式:
$ git status -s | awk '{print $2}'
../../root.txt
relative.txt
或者
$ git status -s | cut -c4-
How can I run "git status" and just get the filenames中解释的最后一种方法。 。第一个非常相似。 :)
但是找到非管道方式会很好。似乎,没有办法避免使用--cached
。
所以,主要不是答案。