git merge recursive их, как это работает? - PullRequest
32 голосов
/ 15 февраля 2010

У меня небольшая проблема. У нас есть собственная 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 Я нашел здесь .

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

Ответы [ 2 ]

59 голосов
/ 16 февраля 2010

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

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

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

2 голосов
/ 15 февраля 2010

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

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

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

Как только вы пройдете через слияние или перебазирование в хранилище «B», будущие слияния будут менее болезненными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...