2017-02-11 25 views
2

Я работаю над проектом на GitHub. На моем компьютере я сделал шесть коммитов, которые я еще не нажал на сервер GitHub. Теперь я понимаю, что хочу сохранить текущую ветку master, которая находится в облаке, и поместить коммиты в отдельную ветвь с именем development. Как я могу это сделать? Я новичок в Git и GitHub.Как создать ветку и сбросить другую с помощью git?

EDIT: У меня также есть несколько коммитов, которые имеют, которые были отправлены в GitHub от до отказа. Я хочу держать их в обеих ветвях, только сохраняя разблокированные коммиты в development.

+0

В конце концов, вы хотите продолжить «развитие» или «мастер». - Ответ на этот вопрос слегка изменяет «лучшую стратегию командной строки». –

ответ

2

Сделать новую ветку, где называются development:

git branch development 

Затем двигаться мастер, где он находится на пульте дистанционного управления:

git checkout master 
git reset --hard origin/master 

Теперь development указывает на ваш последний коммит в то время как master где это было до совершения.

Вы можете нажать на новую ветку и настроить дистанционное слежение (так толкать и тянуть работу без каких-либо дополнительных аргументов) с

git push -u origin development 
+0

Я также совершил несколько раз, что я натолкнулся на GitHub. Не будет ли «сбросить сброс» - грубое происхождение/мастер? Сбросить все мои коммиты? Я хочу, чтобы шесть нечистых коммитов были сброшены в ветви 'master', но были сохранены и помещены в ветвь' development'. –

+0

№.Этот сброс заставит мастер указывать на то, что вы нажали на удаленный, с именем origin last –

+0

Сброс вообще просто перемещает кончик текущей ветви. Это действительно не удаляет изменения или что-то в этом роде. –

0

если вы сделали совершающие к вашей local мастеру отрасли; создать новую ветку в местных и называют, что развитие

git branch development 
git checkout development 

ваши коммиты бы там в этой новой отрасли, и вы можете нажать на облако ака удаленный в мерзавца мире

git push origin development 

пожалуйста, убедитесь, что вы не делает

git push origin master 

если да, то мастер удаленного/облако будет иметь свои фиксаций; который, я считаю, вам не нужен

+0

Как OP собирается сбросить мастер на то, что он на сервере? –

1

Первое, что вы хотите сделать, это создать ветку в точке, где вы находитесь, и «быть» на ней. git checkout - единственная команда, которая может изменить текущую ветку. И его -b вариант создает филиал на вершине (в точке вы находитесь в данный момент, если вы не говорите это иначе):

git checkout -b development 

Затем вы хотите установить местное отделение master туда, где пульт ДУ , Это вы, установив его к так называемому «локальной дистанционному отслеживанию ветви», которая представляет собой снимок удаленного филиала (с момента последней выборкой/толчок):

git branch --force master origin/master 

Вы должны использовать --force здесь, потому что иначе git branch не изменит существующие ветви.

+0

Зачем вам нужно проверять новую ветку, особенно если ваш следующий следующий шаг - работать с другой веткой? –

+0

@MadPhysicist Намерение не продолжать на ветке 'development'? Команда 'git branch' не изменяет текущую проверку, как может показаться ваш комментарий. –

+0

Хорошая точка +1 для вас, сэр –