Как да проверя отдалечен git клон?

Някой е натиснал test с име на клон с test за git push origin test в общо хранилище. Виждам клон с git branch -r .

Сега се опитвам да тествам теста за отдалечен клон.

Опитах:

  • git checkout test който не прави нищо

  • git checkout origin/test дава * (no branch) . Това е объркващо. Как мога да бъда на "без клон"?

Как да проверя отдалечен git клон?

5758
23 нояб. зададен от Juri Glass на 23 ноември 2009-11-23 17:23 '09 в 17:23 2009-11-23 17:23
@ 26 отговора

актуализация

Отговорът на Якуб всъщност подобрява това. С версии Git ≥ 1.6.6 с едно дистанционно управление можете просто:

 git fetch git checkout test 

Както потребителят отбелязва в коментара, 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 
7947
23 нояб. Отговорът е даден hallski 23 Nov. 2009-11-23 17:26 '09 в 17:26 2009-11-23 17:26

Sidenote: С модерен Git (> = 1.6.6 ) можете да използвате само

 git checkout test 

(имайте предвид, че това е "тест" не "начало / тест"), за да изпълните магията DWIM и да създадете за вас локален "тест" на клон, за който нагоре по веригата ще бъде отдалечената следа от "произход / тест".

border=0

Изходът * (no branch) в git branch означава, че сте в неназован клон в така нареченото състояние на "изключена HEAD" (HEAD се отнася директно до фиксацията и не е символична връзка към някой локален клон). Ако сте направили някои обвързвания в този неназован клон, винаги можете да създадете локален клон с текущия ангажимент:

 git checkout -b test HEAD 
1147
24 нояб. Отговор, даден от Jakub Narębski 24 ноември 2009-11-24 03:17 '09 в 3:17 2009-11-24 03:17

В този случай вероятно искате да създадете локален клон за test който проследява клона за отдалечено test :

 $ git branch test origin/test 

В по-ранните версии на git се --track от изрична опция --track , но това е по подразбиране сега, когато --track отдалечен клон.

508
23 нояб. отговорът е даден на 23 ноември. 2009-11-23 17:27 '09 в 17:27 2009-11-23 17:27

Приелият отговор не работи за вас?

Докато първият и избраният отговор са технически правилни, има вероятност да не сте получили всички обекти и връзки от отдалеченото хранилище. Ако е така, ще получите следната грешка:

 $ git checkout -b remote_branch origin/remote_branch 

fatal: git checkout: пътищата за обновяване са несъвместими с превключване на клонове.
Възнамерявате ли да проверите „origin / remote_branch“, което не може да бъде разрешено като ангажимент?

решение

Ако получите това съобщение, първо трябва да направите git fetch origin , където origin е името на отдалеченото хранилище, преди да стартирате git checkout remote_branch . Ето пълен пример с отговорите:

 $ git fetch origin remote: Counting objects: 140, done. remote: Compressing objects: 100% (30/30), done. remote: Total 69 (delta 36), reused 66 (delta 33) Unpacking objects: 100% (69/69), done. From https://github.com/githubuser/repo-name e6ef1e0..5029161 develop -> origin/develop * [new branch] demo -> origin/demo d80f8d7..359eab0 master -> origin/master $ git checkout demo Branch demo set up to track remote branch demo from origin. Switched to a new branch 'demo' 

Както можете да видите, когато стартираме git fetch origin извлечените отдалечени клонове, все още не сме конфигурирали проследяване на локалната ни машина. От там, тъй като вече имаме връзка към отдалечен клон, можем просто да git checkout remote_branch и ще получим предимствата на дистанционното проследяване.

421
07 дек. Отговор, даден от Кори Балу 07 декември 2012-12-07 23:52 '12 в 23:52 ч. 2012-12-07 23:52

Опитах по-горе решение, но тя не работи. Опитайте, работи:

 git fetch origin 'remote_branch':'local_branch_name' 

Това ще доведе до отдалечения клон и ще създаде нов локален клон (ако все още не съществува) с името local_branch_name и ще го проследи изтрито.

208
18 окт. отговор, даден от Sahil kalra 18 окт. 2013-10-18 08:55 '13 в 8:55 2013-10-18 08:55

Това ще бъде DWIM за неназованото отдалечено име ( документация ):

 $ git checkout -t remote_name/remote_branch 

За да добавите ново дистанционно управление, трябва да направите следното:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

Първият казва на Git отдалечен достъп, а вторият получава корекции.

104
28 апр. отговори tacaswell 28 април 2012-04-28 01:37 '12 в 1:37 2012-04-28 01:37

Употреба:

 git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME> 

Други отговори не работят с модерния Git в моя доброкачествен случай. Може да се наложи първо да мигрирате, ако отдалеченият клон е нов, но не съм проверил този случай.

98
21 февр. Отговорът е даден от matanster на 21 февруари. 2016-02-21 13:58 '16 в 13:58 часа 2016-02-21 13:58

Е , отговорът е прост ... По принцип виждате клон, но все още нямате местно копие! ...

Трябва да fetch клон ...

Можете просто да получите и след това да направите поръчка в клон, като използвате командата по-долу, за да направите това:

 git fetch  git checkout test 

Също така създадох изображение по-долу, за да споделите различията си, да видите как работи и как да pull :

2019

05 сент. Отговорът е даден Alireza 05 Sep. 2017-09-05 17:20 '17 в 17:20 часа 2017-09-05 17:20

За да клонирате хранилището на Git, изпълнете:

 git clone <either ssh url /http url> 

Горната команда проверява всички клонове, но само master клон ще бъде инициализиран. Ако искате да проверите други клонове, изпълнете следните стъпки:

 git checkout -t origin/future_branch (for example) 

Тази команда проверява отдалечения клон и името на локалния ви клон е същото като отдалечения клон.

Ако искате да отмените името на местния клон на касата:

 git checkout -t -b enhancement origin/future_branch 

Сега името на локалния ви клон е enhancement , но името ви на отдалечения клон е future_branch .

документация

48
21 янв. отговорът е даден на Madhan Ayyasamy 21 януари 2013-01-21 13:04 '13 в 13:04 2013-01-21 13:04

Можете да опитате

 git fetch remote git checkout --track -b local_branch_name origin/branch_name 

или

 git fetch git checkout -b local_branch_name origin/branch_name 
31
24 марта '14 в 16:11 2014-03-24 16:11 отговорът е даден uma 24 март, '14 в 16:11 2014-03-24 16:11

Първо, трябва да направите:

git fetch # Ако не знаете името на клона

 git fetch origin branch_name 

Второ, можете да проверите отдалечения клон на местния:

 git checkout -b branch_name origin/branch_name 

-b ще създаде нов клон в определеното име от избрания отдалечен клон.

27
18 мая '17 в 16:55 2017-05-18 16:55 Отговор е даден от Mohideen ibn Mohammed на 18 май 2017 в 16:55 2017-05-18 16:55

команди

 git fetch --all git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name> 

са равни

  git fetch --all 

и след това

  git checkout -b fixes_for_dev origin/development 

И двете ще създадат най- latest fixes_for_dev от development

25
21 апр. отговорът е даден от sreekumar 21 април 2016-04-21 22:10 '16 в 22:10 ч. 2016-04-21 22:10

Използвам следната команда:

 git checkout --track origin/other_remote_branch 
23
06 сент. отговорът е даден priyankvex 06 sep . 2017-09-06 17:41 '17 в 17:41 2017-09-06 17:41

Ако клонът е на нещо различно от отдалечено, искам да направя следното:

 $ git fetch $ git checkout -b second/next upstream/next 

Това ще провери next клон на отдалечения upstream сървър в локалния клон, наречен second/next . Това означава, че ако вече имате локален клон на име, той няма да бъде конфликт.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 Отговорът е даден от Kris на 01.03.2013 г. в 13:00 часа 2013-03-01 13:00 часа

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 отговорът е даден на Inder Kumar Rathore на 26 март 2014 г. в 10:00 часа 2014-03-26 10:00 часа

git branch -r казва, че името на обекта е невалидно, защото името на този клон не е в списъка на локалните Git клонове. Актуализирайте списъка на локалния си клон от източника с:

 git remote update 

След това опитайте отново да проверите отдалечения клон.

Работи за мен.

Вярвам, че git fetch дърпа във всички отдалечени клонове, които оригиналният плакат не иска.

15
06 июня '13 в 15:21 2013-06-06 15:21 отговорът е даден от webdevguy юни 06 '13 в 15:21 2013-06-06 15:21

нито един от тези отговори не работеше за мен. работи:

git checkout -b feature/branch remotes/origin/feature/branch

14
10 июля '18 в 5:11 2018-07-10 05:11 Отговорът е даден от brianyang на 10 юли 18 в 5:11 ч. 2018-07-10 05:11

Командата git remote show <origin name> ще покаже списък на всички клонове (включително непроследени клонове). След това можете да намерите името на отдалечения клон, който искате да извлечете.

например:

 $ git remote show origin 

Използвайте тези стъпки за извличане на отдалечени клонове:

 git fetch <origin name> <remote branch name>:<local branch name> git checkout <local branch name > (local branch name should the name that you given fetching) 

например:

 $ git fetch origin test:test $ git checkout test 
11
07 янв. Отговорът е даден от Suchan 07 януари 2018-01-07 16:12 '18 в 16:12 2018-01-07 16:12

Други момчета и момчета дават решения, но може би мога да ви кажа защо.

git check test, който не прави нищо

Does nothing е равно на това, doesn't work , така че предполагам, че когато влезете в теста "git checkout" в терминала си и натиснете клавиша за въвеждане, съобщението не се появява и не възниква грешка. Прав съм

Ако отговорът е да, мога да ви кажа причината.

Причината е, че във вашето дърво има файл (или папка), наречен "test".

Когато git checkout xxx разбра,

  • git първо разглежда xxx като име на клон, но няма тест с име на клон.
  • Тогава Git смята, че xxx е начинът и за щастие (или, за съжаление) има файл, наречен test. Следователно git checkout xxx означава да отмени всяка промяна в xxx файла.
  • Ако няма файл с името xxx , тогава Git ще се опита да създаде xxx според някои правила. Едно правило е да се създаде клон с името xxx , ако съществуват remotes/origin/xxx .
8
10 июля '17 в 10:45 2017-07-10 10:45 отговорът е даден на старец 10 юли '17 в 10:45 2017-07-10 10:45

Бях заседнал в ситуация, в която error: pathspec 'desired-branch' did not match any file(s) known to git. за всички оферти по-горе. Аз съм на git версия 1.8.3.1.

Така че работи за мен :

 git fetch origin desired-branch git checkout -b desired-branch FETCH_HEAD 

Обяснението за това е, че забелязах, че при извличането на отдалечен клон е избран в FETCH_HEAD:

 $ git fetch origin desired-branch From github.com:MYTEAM/my-repo * branch desired-branch -> FETCH_HEAD 
7
11 окт. отговор alisa 11 октомври 2018-10-11 00:52 '18 в 0:52 2018-10-11 00:52

Просто стартирайте git checkout с името на отдалечения клон. Git автоматично ще създаде локален клон, който следи дистанционното:

 git fetch git checkout test 

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

 git checkout --track origin/test 

или

 git checkout -b test origin/test 

В 2.19, Git разгледа конфигурацията на checkout.defaultRemote , в която при отстраняването на такава неяснота се посочва стойността по подразбиране за дистанционно управление.

6
13 сент. отговорът е даден от Евгений Ярмаш на 13 сеп . 2018-09-13 15:21 '18 в 15:21 ч. 2018-09-13 15:21

За да получите новосъздадени клонове

 git fetch 

Преминете към друг клон

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 отговорът е даден от Хасиб Камал на 15 март в 11:49 ч. 2018-03-15 11:49

Можете да започнете да проследявате всички изтрити клонове със следния скрипт:

 #!/bin/bash git fetch --all for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'` do git branch -f --track "$branch" "origin/$branch" done 

Ето и версията с един ред:

 git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ; 
6
11 авг. Отговорът е даден от OzzyCzech 11 август. 2017-08-11 15:06 '17 в 15:06 2017-08-11 15:06

Моля, следвайте тази команда, за да създадете празна папка. Въведете го и използвайте следната команда:

 saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url Cloning into 'iPhoneV1'... remote: Counting objects: 34230, done. remote: Compressing objects: 100% (24028/24028), done. remote: Total 34230 (delta 22212), reused 15340 (delta 9324) Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done. Resolving deltas: 100% (22212/22212), done. Checking connectivity... done. saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/ saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin. Switched to a new branch '1_4_0_content_discovery' 
2
01 янв. отговорът е даден от Mehedi Hasan Jan 01 2016-01-01 13:31 '16 в 13:31 2016-01-01 13:31

Вземете произхода и проверете клона.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 отговорът е даден Pranav 21 май '18 в 14:33 2018-05-21 14:33

Ако името на отдалечения клон започва със специални символи, трябва да използвате единични кавички в командата за плащане, в противен случай git няма да знае кой клон говорите.

Например се опитах да извлича отдалечен клон, наречен #9773 но командата не работи правилно, както е показано на фигурата по-долу:

2019

07 нояб. отговорът е даден Ulysses Alves 07 ное. 2018-11-07 14:17 '18 в 14:17 ч. 2018-11-07 14:17

Други въпроси относно тагове или Ask a Question