Имена коммутаторов в 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