Git: ветвь переключения без отсоединения головки
У меня есть хранилище на github с главной ветвью (master) и веткой для некоторой экспериментальной работы. Я совершил некоторые коммиты и поехал в экспериментальную ветку, и все было в порядке.
Теперь, на другой машине, я пытаюсь клонировать мой репозиторий (репозиторий git clone), а затем переключиться на экспериментальную ветку (git checkout branchname), но каждый раз, когда я делаю это, моя голова отделяется, и я могу Не подтачивай свои изменения. Что я делаю не так? Я чувствую, что мне не хватает фундаментальной концепции git, но чтение случайных страниц git man не дает мне никаких подсказок.
Я новичок в git, поэтому мне жаль, что я идиот, но я не могу найти ничего в документах, которые помогут мне снова прикрепить голову.
ИЗМЕНИТЬ
Концепция ветки отслеживания - это то, чего мне не хватало. Теперь, когда я понимаю эту концепцию, все ясно. Лично я считаю синтаксис git branch --track
более интуитивным, чем git checkout -b branch-name origin/branch-name
.
Спасибо за помощь!
Ответы
Ответ 1
# 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
- это имя "remote", и вы можете получить список из них с помощью
branch -a
Если у вас есть цвета, локальные ветки будут иметь один цвет, а другой - другой.
Сначала вы должны локально удалять удаленную ветку, чтобы иметь возможность переключаться на нее и работать с ней.
Ответ 2
git clone [email protected]:abc/def.git
cd def
Теперь создайте ветвь отслеживания:
git branch --track experimental origin/experimental
git checkout experimental
Затем, после работы там, просто нажмите github на
git push
Ответ 3
Чтобы расширить ответ на Kent, после того, как вы сделаете свой клон, единственная ветка, которую вы будете иметь (пульты не подсчитываются), является той, которая была активной в репозитории, с которой вы клонировали - master в вашем случае.
Итак, сначала вам нужно создать новую ветвь для отслеживания удаленной экспериментальной ветки:
$ git branch experimental origin/experimental
а затем проверьте:
$ git checkout experimental
Однако, Кент прав - эти две команды могут быть объединены
$ git checkout -b experimental origin/experimental
Ответ 4
В Git 2.23 (август 2019 г.) вы будете использовать команду git switch
command
Если у вас есть удаленная ветвь с тем же именем, она будет автоматически отслежена:
$ git switch new-topic
Branch 'new-topic' set up to track remote branch 'new-topic' from 'origin'
Switched to a new branch 'new-topic'