В чем разница между "git log --diff-filter = R" и "git log --find-renames"? - PullRequest
0 голосов
/ 27 мая 2019

Я узнал из видеоуроков о команде git

git log --diff-filter=R --find-renames,

и, прочитав документы, пришел к выводу, что

git log --diff-filter=R

должен давать те же результаты, что и

git log --find-renames

, и первая объединенная команда может считаться опечаткой.

Тем не менее, когда я попробовал еев одном репо обе команды по отдельности дали одинаковые результаты, в то время как в другом репо результаты дали только последний.Кроме того, я не могу найти какую-либо документацию относительно возможных различий между ними.

Может кто-нибудь сказать мне, в чем разница между этими командами, кроме того факта, что вы можете добавлять различные модификаторы для каждой?

1 Ответ

2 голосов
/ 27 мая 2019

Разница действительно довольно простая:

  • Опция --find-renames включает механизм поиска переименования, используя 50-процентный порог соответствия файла по умолчанию. Механизм поиска переименования отключен по умолчанию в довольно старых версиях Git и включен по умолчанию в более новых версиях Git, поэтому, если у вас более новая версия Git (и вы не изменили значения по умолчанию), добавьте --find-renames к вашему git diff не имеет никакого эффекта. 1

  • Опция --diff-filter= устанавливает фильтры, сообщающие Git, какие файлы выборочно отображать после запуска внутреннего модуля сравнения. Выбор R заставляет Git отображать только те файлы, для которых было обнаружено переименование.

Следовательно, если у вас есть древняя версия Git, вам нужны оба варианта (или см. Сноску 1), чтобы видеть только переименованные файлы, но с современным Git, достаточно только параметра --diff-filter=R, если только в конфигурации этого хранилища отключено обнаружение переименования.


1 Существует также несколько регуляторов конфигурации, которые можно установить с помощью параметров git config или -c. Наиболее релевантным здесь является diff.renames, который может быть установлен на false, true, либо copy, либо copies. См. git config документацию для получения дополнительной информации. Значение по умолчанию diff.rename изменено с false на true в Git 2.9.0.

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