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" , будущие слияния будут менее болезненными.