Слияние без пробелов - PullRequest
162 голосов
/ 19 марта 2012

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

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

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

1 Ответ

219 голосов
/ 20 марта 2012
 git merge -Xignore-all-space

Или (точнее)

 git merge -Xignore-space-change

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

См. git diff :

--ignore-space-change

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

--ignore-all-space

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

ks1322 добавляет в комментарии полезный совет:

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


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


Хук предварительной фиксации OP - , на который здесь ссылаются :

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

...