Существует 5 файлов: a.h, aImpl.c, b.h, bImpl.c и main.c, включая оба заголовочных файла.
Branch A:
//File a.h
+extern int x;
//File aImpl.C
+int x=1
Branch B:
//File b.h
+extern int x;
//File bImpl.C
+int x=2
Не конфликтовал ни один файл, но на самом деле конфликтовала глобальная переменная. Как Git Merge будет иметь дело в этом случае?
Встроенное слияние в Git работает только на текстовой основе. Синтаксические или семантические ошибки не имеют отношения к Git. Короче говоря, слияние будет успешным, и код не удастся. Вам решать, а не Git, иметь дело с этим.
Вы можете получить небольшую помощь, используя хиты Git, например, вы можете отключить коммиты, пока не пройдут некоторые тесты. Тем не менее, такие хуки оставляются на усмотрение каждого пользователя. Написание хороших хуков также несколько затруднительно, поскольку коммиты производятся из содержимого индекса (промежуточной области), а не из содержимого рабочего дерева.
Других решений пока нет …