awolf's blog

Меняем местами ветки в git

18 August 2012

Недавно понадобилось поменять местами master-ветку git с другой, devel, в которой я вел разработку последнее время. При этом ветка devel не была основана на master, поэтому я хотел обойтись без слияния и старую master превратить в legacy, а devel превратить в master.

Собственно, решение.

Переименовываем ветки в локальном репозитории.

$ git branch -m master legacy
$ git branch -m devel master

В админке репозитория (на Github, Bitbucket, etc) устанавливаем devel веткой по умолчанию (иначе сервер не даст выполнить следующий шаг)

Удаляем ветку master на сервере.

$ git push origin :master

Пушим новую ветку master (которая на самом деле старая devel) на сервер.

$ git push origin master:master

Пушим новую ветку legacy (которая на самом деле старая master) на сервер.

$ git push origin legacy:legacy

В админке устанавливаем master веткой по умолчанию.

Удаляем ветку devel на сервере

$ git push origin :devel

Если с репозиторием работает кто-то еще, лучше либо вообще так не делать, либо предупредить. Иначе при попытке сделать pull или push в других локальных репозиториях будет ололо.

git