Как заставить git log показывать пути к файлам относительно текущего каталога?

Текущий проект на основе 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 встроенный способ.


person thegreendroid    schedule 03.05.2017    source источник


Ответы (2)


Чтобы использовать пути в выводе 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 теперь может работать, пока текущий каталог принадлежит рабочему дереву.

person ElpieKay    schedule 03.05.2017
comment
Красивый! Метод псевдонима работает нормально, но прямой запуск его в командной строке выдает ошибку (фатальная: не репозиторий git: '$(git rev-parse --show-toplevel)/.git'). - person thegreendroid; 04.05.2017

Вы можете добавить --relative='PATH' в нужный подкаталог.

person Charles    schedule 03.05.2017
comment
Похоже, это исключает изменения, кроме указанного каталога, а это не то, чего я хочу. - person thegreendroid; 03.05.2017