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