Как сделать так, чтобы 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, но ничего не выделялось. Я могу написать скрипт для этого, но мне было любопытно, есть ли встроенный способ Git?

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

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

Другие вопросы по тегам