Было много отлично сообщения о том, как сохранить историю при переименовании файлов и папок в Git.
Это работает в интерфейсе командной строки git:
#if you don't modify oldname.cpp or newname.cpp, git will understand your rename
git mv old.cpp new.cpp
git commit -am "renamed old.cpp -> new.cpp"
git log new.cpp #only shows the new commit
git log --follow new.cpp #shows ALL the history of old.cpp and new.cpp
Отлично, поэтому команда --follow
позволяет нам получить всю историю new.cpp
после его переименования. Это отлично работает в интерфейсе командной строки для git.
Но в веб-интерфейсе github история old.cpp
не отображается для new.cpp
. Это проблема, потому что многие члены моей команды видят свои учетные записи github как часть своих резюме. Если их коммиты не отображаются в github после переименования файлов, они теряют очки возобновления. После серьезной реструктуризации имени файла / каталога у участника может не оказаться ни одной видимой фиксации в репо.
Как мне отобразить полную историю файлов в веб-интерфейсе github (например, git log --follow
) после переименования файлов?
Или я застрял, никогда ничего не переименовываю, если только я не хочу, чтобы случайные пользователи github никогда не видели старые коммиты?
возможный дубликат github отслеживает историю по умолчанию? — person solvingPuzzles schedule 01.10.2013
также связано: Просмотр истории в GitHub после переименования папки — person solvingPuzzles schedule 18.09.2015
(Сбоку) Примечание: git log --follow
был немного глючным до git 2.9 (июнь 2016 г.): см. stackoverflow.com/a/36615639/6309</ а>. — person solvingPuzzles schedule 14.04.2016
Как вы, вероятно, знаете из этих трех связанных вопросов, в Git нет ничего, что отслеживало бы перемещение файла. Для Git это просто удаляемый файл и добавление другого файла. Только интерфейс распознает перемещение файлов на основе схожести содержимого. Итак, если GitHub не обеспечивает отслеживание изменений в файле, который мог быть перемещен раньше, вы мало что можете с этим поделать, кроме как попросить GitHub поработать над этим.
При этом ваше утверждение о том, что перемещение файла приведет к тому, что участник останется без видимых коммитов, является ложным. Да, если я посмотрю на историю одного файла, который был удален ранее, то это может показаться так, но, как и сейчас, Git не забывает ничего, что произошло в репозитории. И журнал репозитория по-прежнему будет содержать каждую фиксацию, которая видна из данной ветки. И это, очевидно, также включает в себя коммиты, которые произошли до того, как файлы были перемещены (потому что Git отслеживает контент, а не изменения). Обычно вы можете получить журнал фиксации по адресу
https://github.com/<user>/<project>/commits/<branch>
.И вот еще один момент: в журнал попадают только те коммиты, которые видны из данной ветки. Так что, если вы работаете с несколькими ветвями, все это в любом случае довольно глупо. Если вы хотите получить некоторое представление о том, сколько участник работает над проектом, вам следует использовать графики проекта на
https://github.com/<user>/<project>/graphs/contributors
.Но, конечно, измерение количества фиксаций — это не лучший показатель в любом случае (то же самое с такими вещами, как соотношение LOC).