Файлы не имеют авторов, в Git. Коммиты имеют авторов.
Коммиты содержат файлы, но каждый коммит содержит каждый файл. Поэтому, если вы сделали коммит a123456
, вы являетесь автором каждого файла в этом коммите, если хотите сделать вид, что у файлов есть авторы. Не имеет значения, был ли файл изменен или нет.
Некоторые - ну, практически все - Git средства просмотра хранилища имеют возможность сообщить вам: между коммитами a123456
и зафиксировать b789abc
, эти файлы изменились . Они делают это, извлекая (во временную область, действительно в память) два коммита - каждый из которых имеет своего отдельного автора - и затем проверяют, являются ли файлы в этих коммитах полностью одинаковыми, или если какой-то данный файл имеет какое-то изменение
Если зритель говорит между смежными коммитами a123456
(родительский) и b789abc
(дочерний), файл new-file.html
изменяет имена на welcome.html
, но строки не изменяются , тогда , вы должны думать об этом как:
Ага: автор commit b789abc
переименовал файл, но я должен продолжать смотреть дальше посмотрите, кто на самом деле написал файл.
Если вы оглянетесь назад, вы можете обнаружить, что файл существовал во множестве коммитов некоторое время без изменений до a123456
, но обратно в commit-pair <parent=6abc043, child=badf00d>
некоторые строки в файле изменились. Это говорит о том, что автор commit badf00d
является автором этих строк в файле. Остальные строки требуют более подробного изучения.
Для этого существует команда командной строки Git, которая называется git blame
. Он начинается с коммита, который вы называете (по умолчанию это ваш текущий коммит, известный как HEAD
), и работает в обратном направлении, как всегда делает Git, коммит с фиксацией. Он смотрит, кто изменил какие части файла, и сообщает, когда произошло что-то интересное. Большинство коммитов в большинстве случаев не изменяют большинства файлов, что делает их неинтересными; git blame
опускает упоминание о них, поскольку в коммите cafedad
, с вашим файлом ничего не случилось не является полезной информацией.