Как показать историю журналов git для подкаталога репозитория git?
Предположим, что у меня есть репозиторий git, который выглядит так.
foo/
.git/
A/
... big tree here
B/
... big tree here
Есть ли способ запросить журнал git для отображения только сообщений журнала для определенного каталога. Например, я хочу посмотреть, какие коммиты касаются файлов только в foo/A?
Ответы
Ответ 1
Из каталога foo/
, используйте
git log -- A
Вам нужно '-', чтобы отделить <path>..
от ссылок <since>..<until>
.
# Show changes for src/nvfs
$ git log --oneline -- src/nvfs
d6f6b3b Changes for Mac OS X
803fcc3 Initial Commit
# Show all changes (one additional commit besides in src/nvfs).
$ git log --oneline
d6f6b3b Changes for Mac OS X
96cbb79 gitignore
803fcc3 Initial Commit
Ответ 2
Вы можете использовать git log
с именами папок соответствующих папок:
git log A B
В журнале отображаются только сообщения, сделанные в A
и B
. Обычно я добавляю --stat
, чтобы сделать вещи немного красивее, что помогает быстро анализировать отзывы.
Ответ 3
если вы хотите увидеть это графически, вы можете использовать
gitk -- foo/A
![enter image description here]()
Ответ 4
Введите
git log .
из конкретного каталога, он также дает коммиты в этом каталоге.
Ответ 5
git log -p
очень полезен, если вам нужен полный diff всех измененных файлов.
Пример: Показать все подробные изменения в определенном диапазоне версий
git log -p 8a5fb..HEAD -- .
commit 62ad8c5d
Author: Scott Tiger
Date: Mon Nov 27 14:25:29 2017 +0100
My comment
...
@@ -216,6 +216,10 @@ public class MyClass {
+ Added
- Deleted
Ответ 6
Для отслеживания изменений в папке, куда папка была перемещена, я начал использовать:
git rev-list --all --pretty=oneline -- "*/foo/subfoo/*"
Это не идеально, так как оно будет захватывать другие папки с тем же именем, но если оно уникально, то, похоже, работает.