Як показати історію журналу git для підкаталогу git repo?


228

Скажемо, що у мене є git repo, який виглядає приблизно так.

foo/
  .git/
  A/
   ... big tree here
  B/
   ... big tree here

Чи є спосіб попросити git log показувати лише повідомлення журналу для певного каталогу. Наприклад, я хочу побачити, що здійснює торкання файлів лише у foo / A?

Відповіді:


242

З каталогу 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

1
до речі, вам слід залишитися в папці "foo", перш ніж робити "git log - A B"
Сергій Лейко

22
Для людей, які не читають читання, це показує зміни A і B , не так, Aяк просив ОП
помічник

1
@GoZoner, чи можна знайти всі коміти, де було змінено конкретне ім’я папки? папка могла пересуватися, тому я вважаю за краще не шукати, як і куди рухалася папка ..
alpha_989

3
^^ Оновлено, щоб відображати зміни Aлише за запитом ОП.
GoZoner

Що робити, якщо каталог було видалено в поточній заголовку?
Аарон Франке

34

якщо ви хочете побачити це графічно, ви можете використовувати

gitk -- foo/A

введіть тут опис зображення


26

Ви можете використовувати git logз іменами шляхів відповідних папок:

git log A B

У журналі відображатимуться лише записи, зроблені в Aта B. Зазвичай я кидаю, --statщоб зробити речі гарнішими, що допомагає швидко виконувати перегляд.


26

Введіть

git log .

з конкретного каталогу він також дає коміти в цьому каталозі.


4
Не працює для мене. Після посадки у конкретний каталог та надання журналу git. дав мені всі коміти з root.
AKS

1
Працює для мене. Використання git bash
buckley

2

Для відстеження змін у папці, в яку переміщено папку, я почав використовувати:

git rev-list --all --pretty=oneline -- "*/foo/subfoo/*"

Це не ідеально, оскільки він захопить інші папки з тим самим іменем, але якщо він унікальний, то він, здається, працює.


0

В інших відповідях відображаються лише змінені файли.

git log -p DIRдуже корисно, якщо вам потрібна повна різниця всіх змінених файлів у конкретному підкаталозі.

Приклад: Показати всі детальні зміни у певному діапазоні версій

git log -p 8a5fb..HEAD -- A B

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

1
Я не розумію, як ця відповідь стосується питання
Флоріан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.