git mv и изменения и индекс сходства
Когда файл переименовывается с git mv
, при фиксации будет показано переименование из и переименование в, а в запросе на получение выдает то же самое, что хорошо. Но когда файл git mv
ed затем изменился, выглядит, что есть определенный порог, что, когда число измененных строк превысило его, он больше не будет отображаться как переименованный, вместо этого он будет отображаться как удаленный старый файл и добавленный новый файл. Итак, мой вопрос: является ли этот порог четко определенным числом? и есть ли другой способ сделать его лучше, главным образом потому, что в diff запроса pull, когда два файла не считаются переименованными, diff не будет отображаться рядом, что затрудняет просмотр.
1 ответ
Он основан на индексе подобия diff
Если
n
указано, это пороговое значение индекса сходства (т. е. количество добавлений / удалений по сравнению с размером файла).Например,
-M90%
означает, что Git должен считать пару "удалить / добавить" переименованием, если более 90% файла не изменилось.Без
%
знак, число должно быть прочитано в виде дроби, с десятичной точкой перед ним. То есть,-M5
становится0.5
и, таким образом, такой же, как-M50%
,
Так же,-M05
такой же как-M5%
,Чтобы ограничить обнаружение точными переименованиями, используйте
-M100%
,Индекс сходства по умолчанию составляет 50%.
В более общем смысле, лучше сначала переименовать файл в mv/rename, зафиксировать, а затем внести некоторые изменения.
Вы можете сделать и то и другое, если указанные изменения незначительны по сравнению с остальной частью файла (типичный случай: рефакторинг, в котором изменяется только имя пакета)