У меня есть git-репо со вторым репо в качестве подмодуля.Оба репо имеют соответствующие ветви для различных функций, которые обычно соответствуют довольно напрямую, например, если родительское репо находится в ветви A, подмодуль также будет в ветви A.
В репо как в родительском, так и в субмодульном временипродолжается добавление новых веток, и иногда я объединяю более старые ветви в более поздние, например, сливаю ветку A в ветку B периодически в обоих репо, в то время как ветка B также получает новые коммиты, которых нет в A.
проблема возникает, когда я объединяю ветвь A в B для родительского репо после обновления подмодуля A.Я хочу игнорировать эти обновления (т.е. я всегда хочу отменить обновления подмодуля во время слияний, в противном случае родительская ветвь B может закончиться веткой подмодуля A, что неверно).
Я нашел инструкции о том, как всегда использовать «наши» при объединении файлов , но это кажется неэффективным для подмодулей.Вот как воспроизвести проблему с подмодулем:
# first command will update your ~/.gitconfig, you may want to undo it later
git config --global merge.ours.driver true
mkdir -p tmp/sub
cd tmp
git init
git commit --allow-empty -m "chore: Initial commit"
echo 'sub merge=ours' >> .gitattributes
git add .gitattributes
git commit -m 'chore: Preserve sub during merges'
mkdir sub
pushd sub
git init
git commit --allow-empty -m "sub: init"
popd
git submodule add ./sub
git commit -m 'add submodule'
git checkout -b demo-prod
pushd sub
echo prod > readme
git add readme
git commit -m 'add prod readme'
popd
git commit sub -m 'sub: add prod readme'
git checkout -
git submodule update
pushd sub
echo master > log
git add log
git commit -m 'add master log'
popd
git commit sub -m 'sub: add master log'
git checkout demo-prod
git merge -
Ожидаемый результат - автоматическое слияние, но фактический результат - конфликт слияния, потому что «sub» имеет новые коммиты в обеих ветвях родительского репо.
Как мне добиться легкого слияния в такой ситуации?