Имена коммутаторов в git

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

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

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

Ответ 1

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

git branch -m master crap_work
git branch -m previous_master master

Ответ 2

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

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

Ответ 3

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

$ git branch in-progress
$ git reset --hard HEAD^

Ответ 4

Это относительно легко:

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

Ответ 5

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

git checkout -B master new_point