Подтвердить что ты не робот

В Git, как мне получить подробный список изменений файла из одной версии в другую?

Я использую репозиторий Git на своем сервере для выпуска файлов данных пользователя, отправленных на сервер. Я заинтересован в получении списка измененных файлов между любыми двумя версиями.

Я знаю о git diff --name-only <rev1> <rev2>, но это дает мне список имен файлов. Меня особенно интересуют переименования и копии. В идеале вывод будет примерно таким:

updated:  userData.txt
renamed:  picture.jpg -> background.jpg
copied:   song.mp3 -> song.mp3.bkp

Возможно ли это? --name-status также не указывает на переименование и копии.

4b9b3361

Ответ 1

git diff --name-status -C <rev1> <rev2>

должен быть ближе к тому, что вы ищете.

--name-status будет отображать имена файлов и их соответствующий статус:

(A|C|D|M|R|T|U|X|B)

Добавлено (A), скопировано (C), удалено (D), изменено (M), переименовано (R),
тип (т.е. регулярный файл, символическая ссылка, подмодуль,...) изменен (T),
Unmerged (U), Unknown (X) или спаривание Broken (B)

(к которому OP Jean Philippe Pellet добавляет:

Буквы статуса R и C "всегда сопровождаются оценкой, обозначающей процент сходства между источником и целью перемещения или копии и единственными, кто должен быть таким". )

Относительно файлов, скопированных или перемещенных:

-C[<n>]
--find-copies[=<n>]

Обнаружить копии, а также переименовать. Если указано n, оно имеет то же значение, что и для -M<n>.

--find-copies-harder

По соображениям производительности по умолчанию опция -C находит копии только в том случае, если исходный файл копии был изменен в том же наборе изменений.
Этот флаг делает команду проверять немодифицированные файлы в качестве кандидатов на источник копии.
Это очень дорогостоящая операция для крупных проектов, поэтому используйте ее с осторожностью. Предоставление более одного параметра -C имеет тот же эффект.


brauliobo рекомендует в комментариях:

git diff --stat -C
git show --stat -C
git log --stat -C

Ответ 2

Я считаю, `` покажет, что информация

git diff -M -C --stat