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

时间:2017-07-14 15:19:57

标签: git git-diff

它以这种方式运作:

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

2 个答案:

答案 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。 所以,主要不是答案。