2013-08-12 2 views
0

Я не уверен, если это дубликат или нет, как это своего рода один от сценария:Откат мерзавец тянуть, что уже были вытеснены

У меня есть филиал «бета», и начал новую «рефакторинг " филиал.

  1. Я сделал кучу кода в ветке «рефакторинг».
  2. Я вытащил последние изменения из бета-версии в рефакторинг (git checkout refactor && git pull origin beta)
  3. Мои изменения были готовы, поэтому я проверил бета-версию и вытащил изменения из рефакторинга в бета-версию. (git checkout beta && git pull origin refactor)
  4. Реализовано, что моя бета-ветвь не была актуальной, поэтому пришлось сделать git pull, чтобы вытащить последние бета-версии.
  5. Теперь, когда бета-ветвь обновилась, сделал еще один git pull origin refactor, чтобы убедиться, что последнее не было (получено сообщение о автоматической фиксации, которое рефактор слился с бета-версией).
  6. Я толкнул мой код :(

Так что теперь я понимая две вещи, которые я сделал неправильно:

  1. На этапе 3, я должен был сделать мерзавец тянуть первый, так что у меня было последние изменения в бета-версии
  2. На третьем этапе я понял, что должен был позвонить git merge refactor вместо git pull origin refactor (не спрашивайте меня, почему я это сделал, это понедельник, и я просто хотел, чтобы мой замечательный код рефакторинга был запущен в бета-версию тестирование). Теперь я понимаю, что если бы я делал обе эти вещи, ни один из последующих шагов не был d были необходимы.

Итак, мой вопрос заключается в следующем: технически, весь код есть и выглядит нормально, но сетевой график на github выглядит супер фанки, и у меня нет одного чистого объединения «слияния», которое я могу легко перевернуть вернемся к тому, чтобы вернуть мою объединенную ветку, вместо этого бета-версия теперь имеет все мои отдельные фиксации из ветки рефакторинга. Есть ли простой способ, которым я могу отбросить свое ошеломляющее слияние и сделать это более чистым способом?

Я пытался делать git checkout beta && git reset --hard [email protected]{"1 hour ago"}, но проблема в том, что заставляет меня к устаревшей локальной версии бета, вместо того, что должно было быть последней версии, прежде чем я выпустил слияние, когда я должен был сделать мерзавец тянуть первым. Я чувствую, что должен быть способ сделать, как git reset --hard origin/[email protected]{"1 hour ago"}, чтобы сбросить до удаленный бета-ветвь @ 1 час назад, а затем сделать git merge refactor? Могу ли я просто нажать эти изменения и убедиться, что удаленные коммиты были перезаписаны?

Спасибо за любую помощь заранее! Я не решаюсь делать что-либо с помощью «git reset», поскольку рефактор довольно крупный, и есть много ожидающих изменений в бета-версии, которых я не делал, поэтому я больше беспокоюсь о том, чтобы сбросить сброс и потерять код чем я беспокоюсь о том, что нужно вручную отменить фиксации из рефакторинга, которые были втянуты.

ответ

0

Вы сделали силовой толчок бета-ветки?

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

  • сделать интерактивную перебазироваться, например, за последние 10 фиксаций «мерзавец перебазироваться -i HEAD ~ 10»
  • удалить коммиты, которые получили слияние с Refactor ветви и убедитесь, что бета чистая и последний обновленный вариант филиала
  • сила толкать его
  • перейти реорганизовать филиал и перебазировать его на бета (GIT Checkout Refactor & & мерзавца перебазироваться бета)
  • перейти к бета и объединить рефакторинг в без фф (GIT оформления заказа бета & & мерзавца объединить --no-ФФ рефакторинг)
  • это даст вам хороший и читаемой историю граф

Если вы не можете сделать усилие толчка, то вы можете усложнить график еще больше. Вы могли бы сделать повторную фиксацию для каждой фиксации в бета-версии, которая была вырвана из рефакторинга. Таким образом, вы получите бета-ветвь в чистом и обновленном состоянии. После этого просто повторите последние 3 этапа верхнего рецепта. Из этого вы получите хороший график, но история до этого останется.

+0

Нет, я не форсировал push после сброса, так как были другие ожидающие изменения от других разработчиков, и я не хотел отказываться от их изменений. Мой рефактор закончил работать отлично, поэтому я не собираюсь с этим хлопотать в данный момент, но если мне действительно нужно все вернуть, я определенно буду использовать это. Благодаря! – streetlogics

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