Вопрос
Этот вопрос может быть задан несколькими способами, поэтому вот описание проблемы.Я работал над мастером и сделал кое-что, а затем решил, что хочу приостановить эту работу.Я сделал резервную копию нескольких коммитов, а затем перешел к тому, что было до того, как начал свою дерьмовую работу.Практически это работает нормально, просто теперь у меня есть другая ветка в качестве основной ветки разработки.Мне интересно, как я могу что-то изменить, поэтому я снова работаю над мастером, но в нем нет моей ненужной работы, и сказано, что работа находится в другой ветке.
Некоторые способы, которыми это можно задать/решить:Как мне переименовать свою главную ветку во что-то другое, а затем переименовать что-то еще в главное?Как мне создать резервную копию master, а затем перенести все предыдущие коммиты в другую ветку?
Спасибо за все (быстрые) ответы!Они все хороши.
Решение
В дополнение к другим комментариям вам может оказаться полезным переключатель -m (переместить) в git-branch.Вы можете переименовать свой старый мастер во что-нибудь другое, а затем переименовать новую ветку в мастер:
git branch -m master crap_work
git branch -m previous_master master
Другие советы
Я думаю, вам следует рассмотреть другую стратегию развития, чтобы предотвратить подобные проблемы.Мне кажется, что лучше всего работает никогда не заниматься разработкой непосредственно в моей основной ветке.Независимо от изменений, которые я делаю, я всегда создаю новую ветку для нового кода:
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
Начать master
, создайте ветку под названием in-progress
, затем сброс master
к более раннему коммиту.
$ git branch in-progress
$ git reset --hard HEAD^
Это относительно легко:
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
Это установит ваш мастер в любую точку за один шаг:
git checkout -B master new_point