Откат или воссоздание основного ответвления в мерзавце?

У меня есть мерзавец repo, который имеет несколько ответвлений - существует основное ответвление, которое является нашей стабильной рабочей версией, и затем существует ответвление разработки/подготовки, которое мы выполняем в новой работе.

К сожалению, казалось бы, что, не думая я был немного фанатичен с перебазированием и вытянул весь код подготовки в Ведущее устройство в течение времени (приблизительно 80 фиксаций... да, я знаю, глупая, неуклюжая, плохая поставка человека кода и т.д.....).

Из-за этого это делает его очень трудно, чтобы я сделал незначительный, закрепляет на текущей версии нашего приложения (приложение направляющих), и выставьте изменения, также не выставляя 'подготовленные' новые возможности, которые мы еще не хотим выпускать.

Я задаюсь вопросом, возможно ли сделать следующее:

  1. Определите последнюю 'магистральную' фиксацию
  2. Возьмите все фиксации от той точки вперед и переместите их в отдельное ответвление, более или менее откатывая изменения
  3. Начните использовать ответвления как, они были сделаны для.

К сожалению, тем не менее, я все еще постоянно узнаю о мерзавце, таким образом, я немного смущен тем, что действительно сделать здесь.

Между прочим, фиксации были продвинуты к удаленному, но я не возражаю повторно продвигать с - сила, я - единственный, кто продвигает удаленный.

Спасибо!

1
задан Matthew Savage 22 April 2010 в 08:40
поделиться

2 ответа

Будет проблема публикации (это означает, что вам придется:

  • принудительно подтолкнуть нового мастера к своему удаленному
  • , связаться с кем-либо, уже подключившимся с этого пульта, чтобы они сбросили свой мастер на удаленный { {1}})

если ваша ситуация:

m1-m2-m3-m4-s1-s2-s3-s4 (master,stage)

то есть, если ваш текущий мастер фактически также является ветвью текущего этапа, можно выполнить простой сброс (как knittl упоминает в его ответ )

Но если ваша ситуация:

m1-m2-m3-m4-s1-s2-s3-s4-m5-m6 (master)
                       \
                        -s5-s6 (stage)

как в: «Я интегрировал stage в мастер, а затем продолжаю работать над мастером!»
, то rebase - на в порядке:

git checkout master
git reset --HARD m4
git rebase --onto master s4 m6

вы получите:

m1-m2-m3-m4-m5'-m6' (master)
           \
            -s1-s2-s3-s4-s5-s6 (stage)
2
ответ дан 3 September 2019 в 01:07
поделиться

вы уже отправили свой коммит в удаленный репозиторий? если вы этого не сделали, вы можете просто использовать git reset (обязательно прочитайте справочную страницу раньше, сброс может быть опасным и запутанным)

0
ответ дан 3 September 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: