Git слияние рекурсивных, как это работает?

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

Теперь у меня есть два репозитория git A и B, A, который является проектом, и B, который является самой CMS. Теперь я хочу получить B в A, но когда я делаю это, я получаю много конфликтов слияния, и решение конфликтов всегда заключается в использовании материала из B.

Теперь я думаю, что мне нужно

git merge <branch> -s recursive theirs <commit>

потому что я хочу слияния, и когда возникает конфликт слияния, его нужно заставить использовать решение от B. Но я не могу заставить его работать. Это всегда говорит мне fatal: 'theirs' does not point to a commit.

Их recursive theirs я нашел здесь.

Кто-нибудь знает, что я делаю не так?

Ответ 1

Вы должны использовать эту форму, чтобы передать параметры стратегии слияния:

git merge -s recursive -Xtheirs # short options
git merge --strategy recursive --strategy-option theirs # long options

Также убедитесь, что ваша версия поддерживает -Xtheirs, что довольно недавняя функция (?)

Ответ 2

Я думаю, что причина, по которой он терпит неудачу, заключается в том, что вы указываете "рекурсивные свои" как стратегию. "рекурсивный" - это стратегия, и когда вы кладете пробел после нее, "их" интерпретируется как нечто git, необходимо объединить вашу рабочую копию с (например, другой веткой или refspec).

Я думаю, вы не сможете указать стратегию точно так, как хотите. Существует стратегия, называемая "наш", которая противоположна тому, что вы хотите.

Обычный шаблон, используемый в этой ситуации, заключается либо в слиянии, либо в перестановке в репозиторий "B" . Из рабочей копии репозитория "A" вы можете сделать переустановку, если это возможно (возможно, это будет невозможно, если вы уже используете репозиторий git с другими разработчиками). Ребаза по существу сводит репозиторий A к общему фиксации в обоих хранилищах, применяет "B" , а затем "A" берет верх. Вы разрешите любые конфликты слияния на этом пути.

После того, как вы перейдете к болью либо слияния, либо переустановки в репозиторий "B" , будущие слияния будут менее болезненными.