Этот вопрос требует "номеров строк", если вам не нужны номера строк в выходных данных, посмотрите этот вопрос и ответ .
По сути, я не хочу видеть измененный контент, только имена файлов и номера строк.
Этот вопрос требует "номеров строк", если вам не нужны номера строк в выходных данных, посмотрите этот вопрос и ответ .
По сути, я не хочу видеть измененный контент, только имена файлов и номера строк.
Ответы:
Примечание: если вы просто ищете имена измененных файлов ( без с номерами строк для строк , которые были изменены), что это легко, нажмите на эту ссылку на другой ответ здесь .
Там нет встроенной опции для этого (и я не думаю , что это все , что полезно либо), но это можно сделать в мерзавец, с помощью «внешнего дифф» сценарий.
Вот довольно дрянной; это будет зависеть от вас, чтобы исправить вывод так, как вы хотели бы.
Подробнее о "external diff" смотрите в описании
GIT_EXTERNAL_DIFF
на странице руководства git (около строки 700, довольно близко к концу).источник
| grep -o '^[0-9]*'
дает только цифры, если вы не заботитесь о правой стороне.--diff-filter=...
где...
часть - это вид изменений, которые вы хотите увидеть:M
для измененных,A
для добавленных,D
для удаленных и другие вgit diff
документации.Так легко:
Иди и отличайся!
источник
git diff --name-only master..HEAD
Номера строк, такие как количество измененных строк или фактические номера строк, содержащие изменения? Если вы хотите количество измененных строк, используйте
git diff --stat
. Это дает вам такой дисплей:Нет возможности получить номера строк самих изменений.
источник
git diff master --compact-summary
Выход:
Это именно то, что вам нужно. Тот же формат, что и при выполнении коммита или получении новых коммитов с пульта.
PS: Это связано с тем, что никто так не ответил.
источник
1) Мой любимый:
Зависит от статуса файла, например:
2) Если вам нужна статистика, то:
покажет что-то вроде:
3) Наконец, если вы действительно хотите только имена файлов:
Просто покажет:
источник
Показывает имена файлов и количество / количество строк, которые изменились в каждом файле с настоящего момента до указанной фиксации:
источник
Я знаю, что это старый вопрос, но в Windows это фильтрует вывод git в файлы и изменяет номера строк:
(git diff -p --stat) | findstr "@@ --git"
Извлечь файлы и измененные строки из этого немного больше:
for /f "tokens=3,4* delims=-+ " %f in ('^(git diff -p --stat .^) ^| findstr ^"@@ --git^"') do @echo %f
источник
Самый чистый вывод, то есть только имена файлов / пути, идет с
НТН
источник
На
git version 2.17.1
, нет встроенного флага для достижения этой цели.Вот пример команды для фильтрации имени файла и номеров строк из унифицированного diff:
Например, унифицированный diff:
Приведет к:
Чтобы сопоставить вывод команд в общих результатах сопоставления grep:
grep -Po '^diff --cc \K.*|^@@@( -[0-9]+,[0-9]+){2} \+\K[0-9]+(?=(,[0-9]+)? )
: Совпадение имени файла сdiff --cc <filename>
ИЛИ совпадение номера строки с@@@ <from-file-range> <from-file-range> <to-file-range>
ИЛИ совпадение оставшегося текста после@@@
.sed -e '0~3{s/ @@@[ ]\?//}'
: Удалить@@@[ ]\?
из каждой 3-й строки, чтобы получить дополнительный 1-строчный контекст раньше++<<<<<<< HEAD
.sed '2~3 s/$/\n1/g'
: Добавьте\n1
каждые 3 строки между 2-й и 3-й строкой для номера столбца.sed "N;N;N;s/\n/:/g"
: Соединяйте каждые 3 строки с:
.источник
Я использую
grep
как наивное решение.пример вывода:
Может быть, вы можете увидеть цветной вывод. Это поможет вам легко прочитать результаты.
источник