Слияние ветки на не обновленном мастере - PullRequest
3 голосов
/ 28 октября 2010

Issue

Я слил ветку в master, не обновленную при последнем коммите.

Что я делаю

Я слил ветку в мастер

git merged BRANCHNAME

Конфликты

Automatic merge failed; fix conflicts and then commit the result.

git commit -a -m "Resolved conflicts while merging email-fix branch"

Затем я попытался подтолкнуть всех к мастеру происхождения, но там написано:

 ! [rejected]        master -> master (non-fast-forward)

Как я могу решить эту проблему?

1 Ответ

1 голос
/ 28 октября 2010

Вы можете сделать:

  • a git pull --rebase, чтобы воспроизвести ваше слияние поверх современной главной ветки
  • затем git push (который должен идти гладко)

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

Обе альтернативы представлены в Git FAQ , хотя рекомендуется только простой git pull.
В справочной странице git push упоминается git pull --rebase:

Например, предположим, что вы и кто-то еще начали с одного и того же коммита X, и вы создали историю, ведущую к фиксации B, в то время как другой человек создал историю, ведущую к фиксации A. История выглядит так:

      B
     /
 ---X---A

В качестве альтернативы, вы можете перебазировать изменение между X и B поверх A с помощью "git pull --rebase" и отодвинуть результат обратно. Перебазировка создаст новый коммит D, который строит изменение между X и B поверх A.

      B   D
     /   /
 ---X---A

Опять же, обновление A с этим коммитом будет ускорено, и ваш толчок будет принят.

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