У меня есть определенное имя файла, и я хочу найти последний (= самый последний) коммит, который изменил файл с этим именем в Git. Обновлено: файл тем временем был удален, поэтому он не является частью текущего рабочего дерева.
Я нашел различные потоки, которые находят самую последнюю фиксацию для определенного файла по определенному пути, однако я ищу способ найти файлы с этим именем по любому пути в репозитории.
git log $filename
.
и если вам нужны только последние изменения каждого файла. попробуйте git log -1 $filename
.
«git log -- $filename» работает, даже если файл был удален локально. (но все равно оставаться в репо.)
Да, часть шаблона glob была недостающим звеном.
git log -n 1 -- **/<filename> <filename>
или
git rev-list -1 <commit> -- **/<filename> <filename>
git log
и git rev-list
позволяют вам предоставлять шаблоны глобуса. Эти шаблоны glob будут соответствовать файлам проверенного коммита, а не вашему текущему рабочему каталогу. Это означает, что он найдет правильный коммит, даже если вы удалили файл.
Аналогичный вопрос для конкретного файла по определенному пути.
git log
предоставит более подробную информацию и может быть настроен, git rev-list
предоставит вам только идентификатор фиксации. См. этот ответ для получения более подробной информации о git rev-list
.
Настройте git log
с помощью --pretty=format:%H
, чтобы отображался только хеш коммита, как git rev-list
, как в этом ответе.
Работает как шарм - спасибо!
С удовольствием, спасибо, что приняли мой ответ. Я присоединился только вчера, и поэтому для меня это первый раз.
Хороший второй ответ ;)
Мне пришлось использовать
git log -- $filename
, чтобы заставить его работать. Однако он ничего не находит - работает ли он, если файл в настоящее время больше не является частью рабочего дерева, поскольку файл был удален некоторое время назад?