Переключать имена веток в git - PullRequest
101 голосов
/ 22 августа 2008

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

Некоторые способы, которые могут быть заданы / решены: Как мне переименовать мою основную ветку во что-то другое, а затем переименовать что-то еще в мастер? Как мне создать резервную копию master, а затем сделать так, чтобы все сделанные мной резервные копии были в другой ветке?

Спасибо за все (быстрые) ответы! Они все хороши.

Ответы [ 5 ]

142 голосов
/ 22 августа 2008

В дополнение к другим комментариям, вы можете найти ключ -m (переместить) в git-branch полезным. Вы можете переименовать своего старого мастера во что-то другое, а затем переименовать новую ветку в master:

git branch -m master crap_work
git branch -m previous_master master
31 голосов
/ 23 августа 2008

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

git checkout -b topic/topic_name master

Оттуда я могу выложить изменения в общедоступные репозитории:

git push pu topic/topic_name

или, в конце концов, просто объедините его с моей основной веткой:

git checkout master && git merge topic/topic_name

Если вам действительно нужно вернуться к более старому моменту времени и установить его в качестве своего мастера, вы можете переименовать текущую ветку в другое, а затем выбрать более старую версию, чтобы стать вашим мастером:

 git branch -m master junk
 git co -b master old_sha1_value
14 голосов
/ 22 августа 2008

Начните с master, создайте ветку с именем in-progress, затем сбросьте master к более раннему коммиту.

$ git branch in-progress
$ git reset --hard HEAD^
7 голосов
/ 22 августа 2008

Это относительно просто:

git checkout -b fake_master master # fake_master now points to the same commit as master
git branch -D master               # get rid of incorrect master
git checkout -b master real_master # master now points to your actual master
git checkout master                # optional -- switch on to your master branch
0 голосов
/ 18 августа 2012

Это установит ваш мастер на любую точку за один шаг:

git checkout -B master new_point
...