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

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

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

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

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

Ответы [ 2 ]

27 голосов
/ 19 мая 2011
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), Неизвестный (X) или спарившийся (B)

(к которому OP Жан-Филипп Пелле добавляет:

За буквами состояния 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
3 голосов
/ 19 мая 2011

Я полагаю, `` покажет эту информацию

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