2013-11-28 2 views
2

я следующая ситуациямерзавца: перебазироваться (после слияния) дает только конфликты

  • создал филиал 'Dev'
  • работала на 'разработчик'
  • работал на 'мастер'

в какой-то момент я хочу, чтобы объединить свою работу с «разработчика» в мастера

$> git checkout master 
$> git merge dev 

Это не проблема, но теперь я хотел бы продолжить работу в ветке 'dev'. Однако у «master» есть некоторые коммиты, которые еще не находятся в «dev», поэтому я попытался переустановить.

$> git checkout dev 
$> git rebase master 

Это не работает и дает конфликты. Решение конфликтов не работает, потому что после этого возникает больше конфликтов. Есть ли объяснение этому?

ответ

1

Немного неясно, чего вы хотите достичь. В начале Вы писали:

В какой-то момент я хочу, чтобы объединить свою работу с «разработчика» в мастера

Тогда Вы писали:

Однако, «мастер» имеет некоторые коммиты, которые еще не находятся в 'dev', поэтому я попытался переустановить.

Если вы хотите получить работу с dev в master вы должны

  1. git checkout master
  2. git rebase dev
  3. разрешения конфликтов при необходимости
  4. git rebase --continue

Затем вы можете вернуться к dev ветви с git checkout dev

Если вы хотите сделать это по-другому, просто переключитесь именами я лично думаю, что запуск git rebase --continue является ключом к вашей проблеме.

PS: Вместо этого, попробуйте рассмотреть возможность запуска git merge в этом случае.

+0

thnx для ответа. Я сначала объединил «dev» в «master», а затем попытался переустановить «dev» (проверить мой вопрос, потому что я его обновил) –

+0

любая причина для downvote? –

+0

@ Если вы посмотрите [здесь] (http://git-scm.com/book/en/Git-Branching-Rebasing) на 3-м снимке, они сделали git checkout master; git rebase dev', в этом случае 'их эксперимент = наш мастер; их хозяин = наш dev', работа от их хозяина (C4) является частью их экспериментальной ветви, и я хочу сказать, что после перезагрузки вы можете быть уверены, что работа с тем, что вы переделаете, включена в нашу HEAD –

0

Единственный разумный способ получить изменения от мастера обратно в dev после того, как вы объединили dev в master, - это слияние master в dev, а не на восстановление dev поверх мастера.

Rebasing обычно используется только на ветвях, которые еще не слиты ни с чем.

Смежные вопросы