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

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

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

Изменение самого git или использование стороннего инструмента не возможно, но использование ловушки - это нормально.

3 ответа

Решение
 git merge -Xignore-all-space

Или (точнее)

 git merge -Xignore-space-change

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

Смотрите git diff:

--ignore-space-change

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

--ignore-all-space

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

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

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


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


Ссылка на pre-commit OP указана здесь:

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

Если вы видите, что у вас много проблем с пробелами при слиянии, вы можете просто прервать его и сделать это снова, на этот раз с -Xignore-all-space или -Xignore-space-change. Первый вариант полностью игнорирует пробелы при сравнении строк, второй рассматривает последовательности из одного или нескольких пробельных символов как эквивалентные.

Мне нравится использовать объединение для объединения вовлеченных конфликтов, и есть возможность установить различные параметры фильтра в разделе Meld>Preferences>TextFilters.

Другие вопросы по тегам