Ответ 1
Git не выполняет отслеживание переименований и отслеживание копирования, что означает, что он не выполняет запись переименовывает или копирует. Вместо этого он переименовывает и копирует обнаружение. Вы можете запросить обнаружение переименования в git diff
(и git show
) с помощью параметра -M
, вы можете запросить дополнительное обнаружение копии в измененных файлах с помощью параметра -C
(-C
означает -M
) и вы можете запросить более дорогое обнаружение копирования среди всех файлов с помощью --find-copies-harder
или -C -C
(что подразумевает -C
, что подразумевает -M
). Смотрите git-diff manpage.
Вы также можете настроить git, чтобы всегда выполнять поиск переименования, установив diff.renames
на логическое истинное значение (например, true
или 1
)), и вы можете запросить git сделать также обнаружение копии, установив до copy
или copies
. Смотрите git-config manpage.
Также проверьте параметр -l
на git diff
и соответствующую конфигурационную переменную diff.renameLimit
.
Обратите внимание, что git log <pathspec>
работает по-разному в Git: здесь <pathspec>
задано ограничение пути, где путь может быть именем (под) каталога. Он фильтрует и упрощает историю до переименование и копирование. Если вы хотите следовать переименованиям и копиям, используйте git log --follow <filename>
(который в настоящее время немного ограничен и работает только для одного файла).