Слияние без конфликтов пробелов

У меня проблема, когда у меня есть большая фиксация, которая меняет около тысячи строк кода, удаляя пробелы с конца строк и удаляя пробелы перед вкладками.

В этом проекте также содержится около 50 запросов на тягу, которые будут иметь конфликты при объединении моего коммита. Есть ли способ, который git может быть настроен так, чтобы при слиянии будущего коммиты он игнорировал конфликты, когда один из них просто изменил пробел?

Модификация самого git или использование стороннего инструмента невозможна, но использование крючка в порядке.

Ответы

Ответ 1

 git merge -Xignore-all-space

Или (точнее)

 git merge -Xignore-space-change

должно быть достаточно, чтобы игнорировать все связанные с пространством конфликты во время слияния.

См. git diff:

--ignore-space-change

Игнорировать изменения количества пробелов.
Это игнорирует пробелы в конце строки и рассматривает все остальные последовательности одного или нескольких символов пробелов как эквивалентные.

--ignore-all-space

Игнорировать пробелы при сравнении строк.
Это игнорирует различия, даже если одна строка имеет пробел, где другая строка не имеет.

ks1322 добавляет в комментарии хороший совет:

Стоит объединиться с --no-commit и проанализировать слияние перед фактическим фиксацией.


OP Callum Macrae сообщает, что в этом случае слияние продолжается непрерывно, а конечные пробелы, содержащиеся в патчах запроса pull, применяются к локальным файлам.
Тем не менее, OP использует крюк pre-commit, который заботится о указанных конечных пробелах.
(Я полагаю, немного похож на этот, а также ссылка здесь).


Ключ предварительной фиксации OP указанный здесь:

В дополнение к удалению конечного пробела он удаляет от одного до трех пробелов перед вкладками (у меня ширина табуляции равна 4) и добавляет EOL.
У меня появились сообщения о том, что код, который добавляет EOL, удаляет файл в Windows, но не смог его реплицировать.