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

标签 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那样工作。

附言 --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

最佳答案

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

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

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

关于git - 如何在 git diff 命令中显示相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45106506/

相关文章:

git - 如何强制推送到Gitlab

git - 在 Github 上查看 .docx 文件,并在 .docx 文件格式上使用 git diff

git - 如何在 Vim 中刷新 git diff 输出

git - 使用不同的应用程序对 git 中的差异输出进行着色

git - 基于 Emacs 的 Git 差异工具?

git - 交互模式下的一些选择在 git 上不起作用

git - 显示 Git 索引中和工作副本中更改的文件

git - 如何从已删除的 Git 远程存储库中恢复

git - 这个工作流程可以用 git-svn 实现吗?

git - pull 请求与 merge 请求