Как переименовать файл в репозитории git, не меняя автора файла? - PullRequest
1 голос
/ 24 апреля 2020
  • Я клонировал репо из Github.
  • Я изменил имя файла в репо.
  • Автор файла был User1.
  • Я отодвинул файл обратно в Github.
  • Теперь я являюсь автором всего файла (commit).
  • Как избежать изменения реального автора файла и переименовать его файл?

Редактировать

Когда я обвиняю файл в Github, он показывает, что все содержимое (SLOC, lines of code) в файле является автором me но на самом деле я просто изменил имя файла.

1 Ответ

2 голосов
/ 25 апреля 2020

Файлы не имеют авторов, в 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, с вашим файлом ничего не случилось не является полезной информацией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...