Git должен взаимодействовать с множеством различных рабочих процессов, например, могут произойти некоторые измененияиз патчей, где информация о переименовании может быть недоступна.Использование явного отслеживания переименования делает невозможным объединение двух деревьев, которые сделали одно и то же, за исключением того, что один сделал это как патч (создать / удалить), а другой - с использованием другой эвристики.
Во-вторых, отслеживание переименований - это просто особый случай отслеживания движения контента в дереве.В некоторых случаях вас может заинтересовать запрос, когда функция была добавлена или перемещена в другой файл.Полагаясь только на возможность воссоздания этой информации, когда это необходимо, Git стремится предоставить более гибкий способ отслеживания изменений в вашем дереве.
Однако это не означает, что Git не поддерживает переименования.Механизм сравнения в Git поддерживает автоматическое обнаружение переименований, это включается переключателем '-M' для семейства команд git-diff- *.Механизм обнаружения переименования используется git-log (1) и git-whatchanged (1), поэтому, например, 'git log -M' выдаст историю фиксации с информацией о переименовании.Git также поддерживает ограниченную форму слияния через переименования.Два инструмента для назначения blame, git-blame (1) и git-annotate (1), оба используют код обнаружения автоматического переименования для отслеживания переименований.
Как особый случай, в «git log» версии 1.5.3 и более поздних есть опция «--follow», которая позволяет вам следовать за переименованием, когда указан один путь.Почта Линуса на эту тему.
Git имеет команду переименования git mv, но это только для удобства.Эффект неотличим от удаления файла и добавления другого с другим именем и тем же содержанием.