如何让git log显示相对于当前目录的文件路径?

时间:2017-05-03 03:45:39

标签: git diff git-diff git-difftool

我正在处理的当前基于Git的项目,我通常总是在子目录中。

以下是从存储库根目录的子目录运行命令 git log --name-only 时的输出。

commit 678bd5ba6fc5474c4c61406768bf6cba5937c5d1
Author: thegreendroid
Date:   Mon Mar 27 09:36:24 2017 +1300

    Commit message

 file1                                          |  184 +--
 ../child_dir2_from_root/file2                  |    2 +-

如何让 git log 输出类似下面的内容?这使得列出的文件变得非常简单,只需复制文件路径并运行 git diff HEAD~ {copied_file_path} ,而不必手动修改文件路径,然后运行命令。

var arr=[1118, 8446, -9046, -1719, 41, 279, 11, 2047, 3855, 4925, 7380, 8477];

arr.sort(function(a, b) {
  return a - b; // ascending
});
console.log(arr);


arr.sort(function(a, b) {
  return b - a; // descending
});
console.log(arr);

我查看了git log文档,但没有什么突出的。我可以编写一个脚本来执行此操作,但我很好奇Git是否有内置方式?

2 个答案:

答案 0 :(得分:4)

要使用git log --name-only输出中的路径,请将选项--git-dir添加到git diff

git --git-dir="$(git rev-parse --show-toplevel)"/.git diff HEAD~ child_dir1_from_root/file1

为方便使用,请在配置中创建别名。

[alias]
        mdiff = "! git --git-dir=\"$(git rev-parse --show-toplevel)\"/.git diff"
只要当前目录属于工作树,

git mdiff HEAD~ child_dir1_from_root/file1现在可以正常工作。

答案 1 :(得分:1)

您可以将--relative='PATH'添加到所需的子目录中。