git diff --name-only с игнорируемым пробелом кажется неработающим - PullRequest
3 голосов
/ 06 мая 2020

У меня есть репозиторий, в котором есть много файлов, в которых изменены только пробелы EOL, но в некоторых из них есть фактические изменения. Я пытаюсь создать псевдоним, чтобы открывать различия только для файлов с реальными изменениями на вкладках vim, и в рамках этого я запускаю команду git diff --name-only ..., чтобы получить список файлов, которые были изменены, чтобы я мог открывать их на вкладках .

Моя проблема в том, что --ignore-space-at-eol, --ignore-space-change и --ignore-all-space, похоже, ничего не делают в сочетании с --name-only.

Когда я запускаю следующую команду, ничего не распечатывается (my_file имеет изменение CR / LF):

git diff --ignore-space-at-eol my_file

Но когда я запускаю это, я получаю my_file распечатанный:

git diff --ignore-space-at-eol --name-only my_file

Есть ли способ получить только имена файлов, в которых нет пробелов? Мне это кажется ошибкой, но я не смог найти аналогичную проблему.

Я использую git версию 2.25.0

1 Ответ

1 голос
/ 06 мая 2020

Вам необходимо:

  • сначала получить список файлов: git diff -–name-only
  • затем для каждого файла сделать git diff --ignore-space-at-eol my_file

Но если вы хотите выполнить второе сравнение только при наличии фактических изменений, завершите это второе сравнение с тестом ( как здесь ), используя параметр --quiet :

if ! git diff --quiet --ignore-space-at-eol my_file; then
    git diff --ignore-space-at-eol my_file
fi
...