Вопрос

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

Некоторые способы, которыми это можно задать/решить:Как мне переименовать свою главную ветку во что-то другое, а затем переименовать что-то еще в главное?Как мне создать резервную копию 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top