Переключить мастер и ветвь функции - программирование
Подтвердить что ты не робот

Переключить мастер и ветвь функции

Мы находимся в ситуации, когда master работает новая функция, а feature1 (который разветвлен мастер) является стабильным мастером. Как мы можем изменить ситуацию так, чтобы они "торговали местами"? I.e., feature1 становится мастером, а мастер становится newfeaturebranch?

Я нашел пару похожих вопросов SO, но в этих случаях они больше не заботились о том, что старый мастер совершает. Здесь мы хотим сохранить текущий мастер как новый newfeaturebranch.

Я подумал об одном способе сделать это:

  • Создайте newfeaturebranch от текущего мастера.
  • Возврат/удаление завершается с master обратно в точку Feature1.
  • Объединить feature1 в мастер.
  • Удалить ветвь feature1.
4b9b3361

Ответ 1

Вы можете переименовать ветки:

git branch -m master newfeaturebranch
git branch -m feature1 master

Ответ 2

EDIT: Это сообщение было написано до того, как вы отредактировали свой вопрос, когда вы говорили, что хотите просто "торговать местами". Если вам не нужно сохранять имена, достаточно решения Poke.


Вам нужна третья ветвь tmp, как и замена переменных в программировании:

  • git checkout -b tmp master: включить новую ветвь tmp, созданную из master
  • git branch -D master: удалить ветвь master
  • git checkout -b master feature1: воссоздайте master из feature1
  • git branch -D feature1: удалить ветвь feature1
  • git checkout -b feature1 tmp: воссоздайте newfeaturebranch из tmp (где master был в самом начале)

Ответ 3

Я начал с решения poke, но после нажатия локальные ветки все еще отслеживали старые удаленные ветки. Чтобы отслеживать правильные ветки, мне просто нужно было добавить -u для нажатия.

git branch -m master newfeaturebranch
git branch -m feature1 master

git push -uf origin master
git push -u origin newfeaturebranch

Это также можно сделать в два этапа, сначала нажав и затем отрегулировав правильную ветвь для отслеживания:

git push -f origin master
git push origin newfeaturebranch

git branch -u origin/master master
git branch -u origin/newfeaturebranch newfeaturebranch