6

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

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

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

    Commit message

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

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

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 是否有内置方式。

4

2 回答 2

5

为了在 的输出中使用路径git log --name-only,请将选项添加--git-dirgit 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现在只要当前目录属于工作树就可以工作。

于 2017-05-03T07:29:15.087 回答
2

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

于 2017-05-03T04:35:48.737 回答