Есть ли способ перечислить все коммиты, которые изменили определенный файл?Список всех коммиттов для определенного файла
ответ
В --follow
работает для конкретного файла
git log --follow filename
отличие от других решений данной
Обратите внимание, что другие решения включают git log path
(без --follow
). Этот подход удобен, если вы хотите отслеживать, например. изменения в каталоге , но спотыкается, когда файлы были переименованы (таким образом, используйте --follow filename
).
git log path
должно делать то, что вы хотите. Из git log
man:
[--] <path>…
Show only commits that affect any of the specified paths. To prevent confusion with
options and branch names, paths may need to be prefixed with "-- " to separate them
from options or refnames.
Должно быть так просто, как git log <somepath>
, проверьте страницу руководства (git-log(1)
).
Лично я хотел бы использовать git log --stat <path>
, чтобы я мог видеть влияние каждой фиксации на файл.
Или даже '-p', если вы хотите увидеть полный diff, а не только, что у него было некоторое количество строк. – Cascabel
Правда, но это довольно шумно, учитывая, что большинство файлов были изменены много раз по сравнению с их жизнью. Я не хочу видеть полные различия между каждым сообщением, которое когда-либо касалось файла. Обычно я ищу конкретную вещь, поэтому я могу получить журнал с ударами, а затем «git show» на конкретные коммиты, которые выглядят так, как будто они имеют значение. – rfunduk
Используйте команду ниже, чтобы получить фиксации для конкретного файла:
git log -p filename
Я понимаю, что это точно не отвечает на вопрос, так как ему нужен список коммитов, но это золото и идет в моем файле. – zkent
Как jackrabb1t отметил, --follow
является более надежным, поскольку он продолжает перечислять историю за пределами переименовывают/ходов. Таким образом, если вы ищете файл, который в настоящее время не находится в том же пути или файл, который был переименован во всех различных коммитах, --follow будет отслеживать его.
Это может быть лучшим вариантом, если вы хотите визуализировать имя/путь меняется:
git log --follow --name-status -- <path>
Но если вы хотите получить более компактный список только тем, что имеет значение:
git log --follow --name-status --format='%H' -- <path>
или даже
git log --follow --name-only --format='%H' -- <path>
недостатком является то, что --follow
работает только для одного файла.
'--follow' работает для одного _path_, который может быть каталогом. Если он прошел через каталог, он будет рекурсивно работать и сообщать об изменениях ко всем файлам ниже этого пункта. – StvnW
В linux вы можете использовать gitk для этого. Его можно установить с помощью «sudo apt-get install git-gui gitk». Он может быть использован, чтобы увидеть коммиты конкретного файла, «gitk»
gitk <path_to_filename>
Предполагая, что пакет «gitk» уже установлена. Если он не установлен, сделайте это
sudo apt-get install gitk
, а затем попробуйте выполнить приведенную выше команду. Это для Linux .. Это может помочь пользователям Linux, если они хотят GUI.
В качестве альтернативы (с git 1.8.4) можно также получить все коммиты, которые сменили определенную часть файла. Вы можете получить это, передав стартовую строку и номер конечной линии.
Возвращенный результат будет списком коммитов, которые изменили эту конкретную деталь. Команда выглядит:
git log --pretty=short -u -L <upperLimit>,<lowerLimit>:<path_to_filename>
где upperLimit
является start_line_number
и lowerLimit
является ending_line_number
Использование git log --all <filename>
для просмотра коммитов, влияющие на <filename>
во всех отраслях.
Если вы пытаетесь --follow файл удален в предыдущей фиксации использования
git log --follow -- filename
Для 'git' newbies: используйте« git log -p --follow - filename », чтобы отобразить изменения. Также обратите внимание: «filename» может быть файлом, каталогом или подмодулем. – Tino
Я смотрел на это близко, и все эти ответы, кажется, не реально показать мне все фиксирует все ветви.
Вот что я придумал, объединившись с параметрами просмотра gitk edit. Это показывает мне все деньги за файл независимо от отрасли, локального, рефлогового и удаленного.
gitk --all --first-parent --remotes --reflog --author-date-order -- filename
Это прекрасно, когда кто-то вносит изменения, но они забывают, где они совершили изменения. – earthmeLon
Очень полезно. Включает также фиксации закладок –
Также работает с 'git log'. Очень круто. –
Если вы хотите просмотреть все коммиты, которые изменили файл, во всех отраслях, используйте этот
git log --follow --all <filepath>
# shows commit history with patch
git log -p -<no_of_commits> --follow <file_name>
# shows brief details like "1 file changed, 6 insertions(+), 1 deletion(-)"
git log --stat --follow <file_name>
, если вы хотите посмотреть на все совершают на filename
и не наfilepath
git log --all -- '*.wmv'
- 1. GitPython Список всех коммиттов для определенного файла
- 2. Список всех git коммиттов?
- 3. Список всех коммиттов для определенного каталога и его детей?
- 4. Список всех коммиттов в ветке темы
- 5. Список всех привязок для определенного режима emacs
- 6. Список всех объектов определенного класса
- 7. Получить список приложений для открытия определенного файла
- 8. Git log: за исключением коммиттов из определенного слияния
- 9. Список всех значений определенного поля в mongodb
- 10. Использование API GitHub для извлечения всех версий определенного файла
- 11. Список всех вершин определенного класса в OrientDB
- 12. MediaStore список всех песен с определенного пути
- 13. Git pre-push hook, перечисление всех нетолкнутых коммиттов
- 14. Получение всех версий определенного файла в TFS?
- 15. каталог Чтение для всех файлов определенного типа файла
- 16. Белые список IP-адреса для определенного файла .htaccess с переписыванием
- 17. Невозможно получить тип файла для определенного файла
- 18. Список Php для определенного типа
- 19. Как получить список символов для определенного языка?
- 20. Список всех тем из файла CHM
- 21. Как получить список всех элементов, которые используют привязку определенного нокаута?
- 22. Получить список всех заголовочных файлов для каждого файла в проекте
- 23. Список всех достижимых узлов
- 24. Анализ HTML-файла для определенного значения
- 25. Мониторинг папки для определенного файла
- 26. Флаг для компиляции определенного файла
- 27. Glob для исключения определенного файла?
- 28. System.IO.Directory.GetFiles для определенного имени файла
- 29. не перенаправлять для определенного файла
- 30. .htaccess для блокировки определенного файла
Это, скорее всего, список коммитов относительно файла по всем коммитам, в отличие от просто 'git log' –
+1 '--follow' учитывает переименования, поэтому это более надежный, чем' git log-path' –
Обратите внимание, что '--follow' принимает _path_, который может быть файлом, но также и каталогом. В случае последнего он будет работать рекурсивно и сообщать об изменениях ко всем файлам ниже этого пункта. (Это поведение не задокументировано в man-странице и может не быть постоянным.) – StvnW