Git - найти фиксацию при создании файла

Каков самый простой способ найти commit, когда какой-то конкретный файл был добавлен в репо? Я предполагаю, что для него нет встроенных функций git, не так ли?

Ответ 1

Это легко. следующие команды показывают сначала, что этот файл был добавлен в репо.

git log --oneline filename | tail -1

Ответ 2

Вы можете сказать:

git log -1 --reverse --pretty=oneline filename

Это должно дать вам первое коммит.

От git help:

   -<n>
       Limits the number of commits to show. Note that this is a commit
       limiting option, see below.

   --reverse
       Output the commits in reverse order. Cannot be combined with
       --walk-reflogs.

Чтобы устранить сообщение фиксации, скажите:

git log -1 --format="%H" --reverse filename

Ответ 3

Вероятно, самая простая вещь - это что-то простое:

git log FILE | grep commit | tail -1 | awk '{ print $NF }'

Ответ 4

Если вы действительно хотите найти коммит, который представил файл, вы должны рассмотреть переименование. Таким образом, используйте

git log --follow --diff-filter=A -- <filepath>

- diff-filter = [(A | C | D | M | R | T | U | X | B)... [*]]
Выберите только файлы, которые были добавлены (A), скопированы (C), удалены (D), изменены (M), переименованы (R)...

- следовать
Продолжайте перечислять историю файла за пределами переименований (работает только для одного файла).

В конце концов вы также должны настроить порог --find-renames.

- найти-переименовывает [=]
Если вы создаете diff, обнаруживаете и сообщаете переименования для каждой фиксации. Для следующих файлов переименований во время прохождения истории см. --follow. Если указано n, это пороговое значение для индекса подобия (т.е. Количество добавлений/исключений по сравнению с размером файлов). Например, -M90% означает, что Git должен рассматривать пару delete/add как переименование, если более 90% файла не изменилось. Без знака% номер должен быть прочитан как дробь с десятичной точкой перед ним. Ie, -M5 становится 0,5 и, таким образом, совпадает с -M50%. Аналогично, -M05 совпадает с -M5%. Чтобы ограничить обнаружение точным переименованием, используйте -M100%. По умолчанию индекс подобия равен 50%.