Я нашел здесь хороший ответ: stackoverflow Q332528
В нем используются идеи, взятые здесь: Стратегии слияния Pro-Git
Вот его копия:
Предположим, вы хотите исключить файл
config.php
На ветке A:
- Создайте файл с именем .gitattributes в том же каталоге, с этой строкой: config.php merge = ours. Это говорит git, какую стратегию следует использовать при слиянии файла. В этом случае он всегда сохраняет вашу версию, т.е. версия на ветке, в которую вы сливаетесь.
- Добавить файл .gitattributes и зафиксировать
На ветке B: повторить шаги 1-2
Попробуйте слить сейчас.
blockquote>
Изменить: Из git book относительно
merge=ours
: «Один очень полезный вариант - сказать Git, чтобы он не попытайтесь объединить определенные файлы, когда у них есть конфликты, а скорее использовать свою сторону слияния над чужим ».Итак, этот ответ не применим, как и к вопросу. Ответ pjmorse относительно использования подмодулей хорош.
Другим вариантом будет использование слияния поддерева , которое может иметь дополнительные преимущества.
С вашими обновлениями: Да, подмодули будут подходящими для этого использования, если все A помещается в подкаталог B (или наоборот). Примером подмодулей с использованием WordPress было бы, если у вас есть git-хранилище Wordpress; вы можете добавить подмодуль для темы, которая будет находиться внутри каталога /wp-content/themes/
.
Документация для подмодулей может помочь.
Если файлы из они чередуются, это может быть более жестким. В большинстве случаев, когда подмодули могут использоваться таким образом, рассматриваемая заявка была разработана для их разрешения.
Вы можете найти полезную команду git rerere
. С этим вы можете записывать разрешения для определенных конфликтов слияния и повторно использовать их позже.