Някой е пуснал клон, наречен test
, с git push origin test
в споделено хранилище. Мога да видя клона с git branch -r
.
Сега се опитвам да проверя отдалечения клон test
.
Опитах:
git checkout test
, което не прави нищо
git checkout origin/test
дава * (no branch)
. Което е объркващо. Как мога да бъда на "no branch"?
Как да проверя отдалечен клон на Git?
Jakub's answer всъщност подобрява това. С версиите на Git ≥ 1.6.6, при които има само едно отдалечено устройство, можете просто да направите:
git fetch
git checkout test
Както посочва в коментар потребителят masukomi, git checkout test
НЕ работи в съвременния git, ако имате няколко дистанционни. В този случай използвайте
git checkout -b test <name of remote>/test
или съкращението
git checkout -t <name of remote>/test
Преди да започнете да работите локално върху отдалечен клон, трябва да го изтеглите, както е описано в отговорите по-долу.
За да изтеглите клон, трябва просто да:
git fetch origin
Това ще изведе всички отдалечени клонове за вас. Можете да видите наличните клонове за изтегляне с:
git branch -v -a
След като вече имате отдалечените клонове, трябва да проверите клона, който ви интересува, за да получите локално работно копие:
git checkout -b test origin/test
Забележка: Със съвременния Git (>= 1.6.6) можете да използвате само
git checkout test
(обърнете внимание, че това е 'test', а не 'origin/test'), за да извършите магическата DWIM-мерия и да създадете локален клон 'test' за вас, за който upstream ще бъде отдалечено проследявания клон 'origin/test'.
Знакът * (no branch)
в изхода на git branch
означава, че се намирате на неназован клон, в така нареченото "detached HEAD" състояние (HEAD сочи директно към commit, а не е символична препратка към някакъв локален клон). Ако сте направили някои промени в този неназован клон, винаги можете да създадете локален клон от текущата промяна:
git checkout -b test HEAD
В този случай вероятно искате да създадете локален клон test
, който да следи отдалечения клон test
:
$ git branch test origin/test
В по-ранните версии на git
беше необходима изрична опция --track
, но сега тя е по подразбиране, когато се разклонявате от отдалечен клон.