miker059
@miker059
Коротко не получится

Как вернуть ветку которая была случайно смерджина с мастером, а потом ее откатили?

Привет, Коллеги!

Помогите решить проблемку.

Было значит несколько веток для разработки, для предварительного просмотра собрали все ветки в одну и запушили в гитлаб, и как оказалось ветка эта для сборки была создана неправильно, и все изменения улетели в мастер((( так как над проектом работает много народу пришлось быстро все ревертить в гитлабе, соответственно после этого реверта все те ветки что мерджились больше смерджить не получается, т.к. они уже были смерджины в мастер и ревертнуты... собственно вопрос, как вернуть актуальность этих веток со всеми изменениями, чтобы можно было влить их в мастер снова, когда это будет нужно?
  • Вопрос задан
  • 2592 просмотра
Решения вопроса 1
miker059
@miker059 Автор вопроса
Коротко не получится
Да мастер откатить, проблема решается, но дело в том что народу работает много и многие уже насоздавали веток от ревертнутого мастера и соответственно если жестко откатить мастер, то когда начнут мерджить те ветки, что насоздавали с ревертнутого мастера то что будет одному богу известно...
Кароче проблему решили более мирным путем, все оказывается гараздо проще...
Локально, все затронутые ветки, по очередно смерджили с новым мастером, что затерло в них все правки, после чего запушили их в гитлаб. В самом гитлабе нашли коммиты с мерджем в мастер, последние которые были со всеми изменениями в ветке и черри-пикнули эти коммиты обратно каждый в свою ветку... собственно после чего все вернулось на место...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
youngmysteriouslight
@youngmysteriouslight
ТК, ТТ, JS, FP, WM
Есть грубый способ:
0) git-checkout на нужную ветку.
1) git-reset на коммит, который был головным до слияния.
Из-за особенностей гита из истории в общем случае узнать нельзя, поэтому придётся угадывать, ориентируясь на названия коммитов, или на git-revlog, если имеется.
2) git push -f <имя репозитория> <имя изменённой ветки>
В этом случае нужно убедиться, что никто из коллег не запушит в эти ветки.
Ответ написан
Комментировать
Austin_Powers
@Austin_Powers
Web developer (Symfony, Go, Vue.js)
Возможно Вам поможет git reflog
Хранит в себе все действия над веткой, включая мержи и ребейзы.
1) Перейти в мастер
2) Откатить мастер до нужного момента (вероятно до того, когда были смержены туда все ваши ветки)
3) Запушить с форсом.

Но аккуратнее, все таки мастер. )
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы