Я относительно новичок в git, раньше использовал Subversion.
Я заметил, что большинство графических интерфейсов git и плагинов IDE не могут отображать историю файла, если файл был переименован. Когда я использую
git log --follow
в командной строке я могу видеть весь журнал переименований.
По словам Линуса Торвальдса, переключатель --follow - это угодник "SVN noob", серьезные пользователи git не используют его:
--follow - это полный взлом, предназначенный просто для удовлетворения бывших пользователей SVN, которые в любом случае ничего не знали о таких вещах, как отцовство или красивые графы ревизий.
Это не совсем фундаментально, но текущая реализация «--follow» на самом деле является средством быстрой предварительной обработки, прикрепленным к логике обхода ревизий, а не чем-то действительно целостным.
Он в буквальном смысле был разработан как приятель «SVN noob», а не как «настоящая функциональность git». Идея заключалась в том, чтобы уйти от (сломанного) мышления, которое переименовывает материю в большой картине.
Мой вопрос : как хардкорные пользователи git среди вас получают историю файла, когда он был переименован? Как это сделать «настоящий»?
/bin/mv oldfile newfile), но затем сделаете это git add newfile; git rm oldfile, результат будет неотличим от результата git mv oldfile newfile.
git log --followнемного улучшается с git 2.9 (июнь 2016 г.): см. Мой ответ ниже
--color-movedкогда вы diff.
git mv oldfile newfileне вызывает переименования должны быть записаны на всех - это точно так же , как удаление одного файла и добавления другого. git только переименовывает и копирует состояние дерева при каждой фиксации постфактум.