it-swarm.com.ru

git: переключить ветку без отсоединения головы

У меня есть репозиторий на github с основной веткой (master) и веткой для некоторых экспериментальных работ. Я сделал несколько коммитов и подтолкнул к экспериментальной ветви, и все было хорошо.

Теперь на другом компьютере я пытаюсь клонировать свой репозиторий (репозиторий git clone ), а затем переключиться на экспериментальную ветку (git checkout branchname ), но каждый раз, когда я делаю это, моя голова отрывается, и я не могу нажать свои изменения. Что я делаю неправильно? У меня такое ощущение, что я где-то упускаю фундаментальную концепцию git, но чтение случайных страниц руководства git не дает мне никаких подсказок.

Я новичок в Git, так что извините, если я идиот, но я не могу найти в документах ничего, что помогло бы мне снова прикрепить мою голову.

РЕДАКТИРОВАТЬ

Концепция отслеживания ветки - это то, чего мне не хватало. Теперь, когда я понимаю эту концепцию, все ясно. Лично я нахожу синтаксис git branch --track гораздо более интуитивно понятным, чем git checkout -b branch-name Origin/branch-name.

Спасибо за помощь!

93
Dana Robinson
# first time: make Origin/branchname locally available as localname
git checkout -b localname Origin/branchname 

# othertimes 
git checkout localname 

git Push Origin

Для удобства вы можете использовать одну и ту же строку для localname & branchname
Когда вы проверяли Origin/branchname, вы на самом деле не проверяли ветку. Origin/branchname - это "удаленное" имя, и вы можете получить их список с помощью

branch -a 

Если у вас включены цвета, локальные ветви будут одного цвета, а удаленные - другого.

Вы должны сначала создать удаленную ветку, отслеживаемую локально, чтобы иметь возможность переключаться на нее и работать с ней.

104
Kent Fredric
git clone [email protected]:abc/def.git
cd def

Теперь создайте ветку отслеживания:

git branch --track experimental Origin/experimental
git checkout experimental

Затем, поработав там, просто нажмите на github

git Push
16
Christoph Rüegg

Чтобы расширить ответ Кента, после того, как вы сделаете свой клон, единственной ветвью, которая у вас будет (удаленные не считаются), будет та, которая была активной в репозитории, из которого вы клонировали, - master в вашем случае.

Итак, сначала вы захотите создать новую ветку для отслеживания удаленной экспериментальной ветви:

$ git branch experimental Origin/experimental

а затем проверить это:

$ git checkout experimental

Однако Кент прав - эти две команды можно объединить

$ git checkout -b experimental Origin/experimental
10
Pat Notz