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

<p>у меня есть репозиторий на github с основной веткой (master) и веткой для некоторых экспериментальных работ. я сделал несколько коммитов и подтолкнул к экспериментальной ветви, и все было хорошо.</p><p>теперь на другом компьютере я пытаюсь клонировать свой репозиторий (репозиторий git clone <em> </em>), а затем переключиться на экспериментальную ветку (git checkout <em> branchname </em>), но каждый раз, когда я делаю это, моя голова отрывается, и я не могу нажать свои изменения. что я делаю неправильно? у меня такое ощущение, что я где-то упускаю фундаментальную концепцию git, но чтение случайных страниц руководства git не дает мне никаких подсказок.</p><p>я новичок в git, так что извините, если я идиот, но я не могу найти в документах ничего, что помогло бы мне снова прикрепить мою голову.</p><p><strong>редактировать</strong></p><p>концепция отслеживания ветки - это то, чего мне не хватало. теперь, когда я понимаю эту концепцию, все ясно. лично я нахожу синтаксис <code>git branch --track</code> гораздо более интуитивно понятным, чем <code>git checkout -b branch-name origin/branch-name</code>.</p><p>спасибо за помощь!</p>

<pre class="lang-bash prettyprint-override"><code># first time: make origin/branchname locally available as localname git checkout -b localname origin/branchname # othertimes git checkout localname git push origin </code></pre><p>для удобства вы можете использовать одну и ту же строку для localname & branchname<br> когда вы проверяли <code>origin/branchname</code>, вы на самом деле не проверяли ветку. <code>origin/branchname</code> - это "удаленное" имя, и вы можете получить их список с помощью</p><pre><code>branch -a </code></pre><p>если у вас включены цвета, локальные ветви будут одного цвета, а удаленные - другого.</p><p>вы должны сначала создать удаленную ветку, отслеживаемую локально, чтобы иметь возможность переключаться на нее и работать с ней.</p>

<pre><code>git clone git@github.com:abc/def.git cd def </code></pre><p>теперь создайте ветку отслеживания:</p><pre><code>git branch --track experimental origin/experimental git checkout experimental </code></pre><p>затем, поработав там, просто нажмите на github</p><pre><code>git push </code></pre>

<p>чтобы расширить ответ кента, после того, как вы сделаете свой клон, единственной ветвью, которая у вас будет (удаленные не считаются), будет та, которая была активной в репозитории, из которого вы клонировали, - master в вашем случае.</p><p>итак, сначала вы захотите создать новую ветку для отслеживания удаленной экспериментальной ветви:</p><pre><code>$ git branch experimental origin/experimental а затем проверить это:$ git checkout experimental </code></pre><p>однако кент прав - эти две команды можно объединить</p><pre><code>$ git checkout -b experimental origin/experimental </code></pre>