В последних версиях git достаточно логики DWIM («Делай, что я имею в виду!»), Чтобы понять, что ты просто делаешь:
git checkout branch1
... в этой ситуации.Это будет работать, если нет локальной ветви с именем branch1
, и есть только одна ветка удаленного отслеживания, которая заканчивается на branch1
- в этом случае она эквивалентна более длинной:
git checkout --track -b branch1 origin/branch1
...который должен работать при любых обстоятельствах.
Я понимаю, что мне не хватало ответа на некоторые ваши более поздние вопросы.git хранит состояние веток из репозитория origin
в так называемых «ветвях удаленного отслеживания» - это те, которые выглядят как origin/master
, origin/branch1
, origin/branch2
и т. д. Если вы хотите обновитьвсе из origin
просто используйте:
git fetch origin
Чтобы увидеть все ваши ветви удаленного отслеживания, вы можете использовать:
git branch -r
Значение полной команды, которую я цитировалвыше:
git checkout --track -b branch1 origin/branch1
... is:
- создать и переключиться на новую ветвь с именем
branch1
(бит checkout -b branch1
) - startон равен
origin/branch1
(т. е. основан на последнем кэшированном состоянии branch1
из origin
) - и помечает
origin/branch1
как "восходящий поток" branch1
в вашей конфигурации git (--track
бит, хотя это на самом деле подразумевается, если начальная точка является ветвью удаленного отслеживания)