2015-04-03 2 views
2

У меня проблема с Git rebase, что я должен снова и снова объединять код, но все равно безуспешно.Git rebate круги снова и снова

У меня был разрез моей ветки (A) от мастера. Я начал работать над своим филиалом и сделал больше коммитов. В то же время мастер был также изменен и подвергся кучу коммитов. Теперь я пытаюсь объединить свою ветку к хозяину.

Так что я даю,

git co master 
git pull 
git co branch-A 
git rebase master 

Теперь я получаю сообщение, как КОНФЛИКТ: Объединить конфликт в

С этим, она разветвляется в новую ветку с именем (без отделения, перебазирование филиала-А) После этого я разрешаю все конфликты, а затем я даю git добавить все эти файлы.

Теперь я получаю статус

rebase in progress; onto ad0da3f 
You are currently rebasing branch 'branch-A' on 'ad0da3f'. 
    (all conflicts fixed: run "git rebase --continue") 

После этого я бегу мерзавца перебазироваться --continue и все изменения, которые я сделал, чтобы разрешить конфликты ушли в прошлое, и он возвращается в исходное состояние слияния и метания огромная группа конфликтов, как раньше!

Мой вопрос,

  1. Как я могу получить обратно все разрешения конфликтов, которые я сделал перед выпуском мерзавец перебазироваться --continue?
  2. Как я могу не застревать в том же цикле, который должен снова и снова сливаться, чтобы вытащить изменения из мастера в мою ветку?
  3. После того как я успешно объединить все изменения от мастера к моей отрасли, чтобы объединить свою ветку обратно к хозяину, я могу просто использовать,

    мерзавец совместно мастер мерзавец слияния филиал-A

Или мне нужно выпустить больше команд?

Любая помощь, пожалуйста ...

+0

Вы попробовали ответ? – androidevil

ответ

2

Для меня это трудно сказать, что случилось с вами, но следовать этим шагам:

  • Во-первых, сделать резервную копию папки, в которой находится ваш проект, только если что-то пошло не так, у вас еще есть оригинальный локальный репозиторий.

  • ли тянуть с перебазироваться в мастер:

    git checkout master 
    
    git pull --rebase origin master 
    
  • Rebase вашу ветку с мастером:

    git checkout branch-A 
    
    git rebase master 
    
  • И, конечно, если есть какой-то конфликт, решить, как вы уже делать.

Когда я говорю об отказе от ветви с самим собой, я хотел бы сказать, обновить вашу ветку с помощью пульта.Конечно, если вы используете ветку-А, вам не нужно делать pull или pull --rebase в вашем местном отделении. Но у мастера это хорошая практика с использованием rebase до avoid merge commits that result from git pull. Конечно, перебалансировка вызывает некоторые последствия, например, когда вы нажимаете фиксации, прежде чем выполнять переустановку. Таким образом, идеальный, делает все локальным, и только после переустановки вы нажимаете свою ветку или объединяете ее с мастером. См. The Perils of Rebasing.

В моем случае, что мне нравится делать: после перезагрузки моей ветви функции с мастером, я выхожу на мастер и делаю git merge <my-branch> --no-ff. Таким образом, моя история git имеет фиксацию слияние ветки «my-branch». И мне нравится эта история.

Дополнительная информация о merge vs. rebase см. this answer Задать вопрос В чем разница между 'git merge' и 'git rebase'?

+0

Привет Андроидер, Спасибо, что потратили время, чтобы помочь мне. На самом деле я узнал, что я не потерял все свои изменения, и просто мне нужно объединиться на каждом уровне фиксации, чтобы решить, какую фиксацию принять и какие фиксации игнорировать. Следовательно, я все еще разрешаю и продолжаю перебазирование. Я не знаю, что произойдет, если мы перекроем ветку самостоятельно. Не могли бы вы предоставить некоторую информацию, чтобы указать мне на статью, объясняющую это? Еще раз спасибо за предоставление ценных предложений для решения моей проблемы :) – sriram

+0

Я обновил ответ. Нет необходимости делать шаг, который я назвал rebase веткой с itel. Но если у вас все еще есть проблемы, и он не в состоянии выполнить переустановку правильно, wold будет полезен для улучшения ответа, посмотрите журнал ваших двух ветвей (мастер и ветвь-A). По крайней мере последние коммиты этих ветвей. – androidevil

+0

Спасибо за предоставление дополнительной информации. Так как было большое количество коммитов как на главном, так и на моем филиале, я должен был разрешить каждую из этих коммитов и запустить, git add и rebase - продолжить, а не совершать (как это делает rebase -continue). После этого все конфликты решены, и я объединил свою ветку с мастером. – sriram

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