Kaip patikrinti nuotolinį git filialą?

Kažkas paspaudė filialą, kurio pavadinimas buvo test su „ git push origin test į bendrą saugyklą. Matau šaką su git branch -r .

Dabar bandau išbandyti nuotolinį šakos test .

Bandžiau:

  • git checkout test kuris nieko nedaro

  • git checkout origin/test suteikia * (no branch) . Tai paini. Kaip galiu būti „ne filiale“?

Kaip patikrinti nuotolinį git filialą?

5758
23 нояб. „ Juri Glass“ nustatė lapkričio 23 d 2009-11-23 17:23 '09, 17:23, 2009-11-23 17:23
@ 26 atsakymai

Atnaujinti

Jakubo atsakymas iš tiesų tai pagerina. Su „Git“ versijomis ≥ 1.6.6 su vienu nuotoliniu būdu, galite:

 git fetch git checkout test 

Kaip komentaras komentuoja vartotojas, „ git checkout test neveiks šiuolaikinėje gitoje, jei turite kelis konsolius. Tokiu atveju naudokite

 git checkout -b test <name of remote>/test 

arba santrauka

 git checkout -t <name of remote>/test 

Senas atsakymas

Prieš pradedant vietinį darbą su nuotoliniu filialu, turite jį gauti, kaip nurodyta toliau pateiktuose atsakymuose.

Jei norite gauti filialą, jums tereikia:

 git fetch origin 

Tai atneš jums visus nuotolinius filialus. Galite pamatyti filialus, kuriuos galima užsisakyti užsakant:

 git branch -v -a 

Dabar, kai turite nuotolinių filialų, turite patikrinti filialą, kurį domina, pateikdami vietinę darbo kopiją:

 git checkout -b test origin/test 
7947
23 нояб. Atsakymas yra suteiktas hallski 23 lapkritis. 2009-11-23 17:26 '09 at 17:26 pm 2009-11-23 17:26

Sidenote: Naudodami šiuolaikinį „Git“ (> = 1.6.6 ) galite naudoti tik

 git checkout test 

(Atkreipkite dėmesį, kad tai yra „bandymas“, o ne „kilmė / testas“), kad būtų galima atlikti magišką DWIM- modelį ir sukurti jums vietinį filialo „testą“, kurio pradžioje būtų nuotolinis „kilmės / bandymo“ pėdsakas.

border=0

Išvesties * (no branch) git branch reiškia, kad esate vadinamojoje „atjungtoje HEAD“ būsenoje nepažymėtame filiale (HEAD tiesiogiai nurodo įsipareigojimą ir nėra simbolinė nuoroda į kai kuriuos vietinius filialus). Jei padarėte tam tikrus įsipareigojimus šiame nepažymėtame filiale, visada galite sukurti vietinį padalinį, kuriame yra dabartinė:

 git checkout -b test HEAD 
1147
24 нояб. Jakubo Narębskio lapkričio 24 d. Atsakymas 2009-11-24 03:17 '09 at 3:17 2009-11-24 03:17

Tokiu atveju tikriausiai norite sukurti vietinį test skyrių, kuris seka nuotolinio test skyrių:

 $ git branch test origin/test 

Ankstesnėse „ git versijose jums reikėjo aiškios „ --track parinkties, tačiau tai yra numatytasis dabar, kai --track nuotolinį filialą.

508
23 нояб. atsakymas pateikiamas ne lapkričio 23 d. 2009-11-23 17:27 '09 17:27 2009-11-23 17:27

Priimtas atsakymas jums neveikia?

Nors pirmasis ir pasirinktas atsakymas yra techniškai teisingas, yra galimybė, kad dar negavote visų objektų ir nuorodų iš nuotolinio saugyklos. Jei taip, gausite šią klaidą:

 $ git checkout -b remote_branch origin/remote_branch 

mirtinas: git checkout: atnaujinimo keliai yra nesuderinami su perjungimo šakomis.
Ar ketinate patikrinti „kilmę / nuotolinį ryšį“, kurio negalima išspręsti kaip įvykdytą?

Sprendimas

Jei gausite šį pranešimą, pirmiausia turite padaryti git fetch origin , kur origin yra nuotolinio saugyklos pavadinimas prieš paleisdami git checkout remote_branch . Čia pateikiamas išsamus atsakymų pavyzdys:

 $ 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' 

Kaip matote, kai paleisime išgautų nuotolinių filialų git fetch origin , mes dar nesukonfigūravome stebėjimo mūsų vietinėje mašinoje. Iš čia, kadangi dabar turime nuorodą į nuotolinį filialą, mes galime tiesiog paleisti „ git checkout remote_branch ir gausime nuotolinio stebėjimo privalumus.

421
07 дек. Corey Ballou atsakymas: gruodžio 7 d 2012-12-07 23:52 '12 11:52 val. 2012-12-07 23:52

Bandžiau pirmiau minėtą sprendimą, tačiau jis neveikė. Išbandykite, jis veikia:

 git fetch origin 'remote_branch':'local_branch_name' 

Tai sukels nuotolinį filialą ir sukurs naują vietinį filialą (jei jis dar nėra), pavadinimą local_branch_name ir sekite jį ištrintu.

208
18 окт. atsakymas, kurį pateikė Sahil kalra 18 okt. 2013-10-18 08:55 '13, 8:55 2013-10-18 08:55

Tai bus nežinomo nuotolinio vardo DWIM ( dokumentacija ):

 $ git checkout -t remote_name/remote_branch 

Jei norite pridėti naują nuotolinio valdymo pultą, turite atlikti šiuos veiksmus:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

Pirmasis pasakoja „Git“ nuotolinę prieigą, antrasis - įsipareigoja.

104
28 апр. atsakė tacaswell 28 balandis 2012-04-28 01:37 '12 at 1:37 2012-04-28 01:37

Naudoti:

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

Kiti atsakymai neveikia su šiuolaikiniu „Git“ mano gerybiniu atveju. Jei nuotolinis filialas yra naujas, jums gali tekti perkelti iš pradžių, bet šio atvejo nekontroliuoju.

98
21 февр. Atsakymą pateikė matanster , vasario 21 d. 2016-02-21 13:58 '16 at 13:58 pm 2016-02-21 13:58

Na , atsakymas yra paprastas ... Jūs iš esmės matote filialą, bet dar neturite vietos kopijos! ...

Turite fetch filialą ...

Paprasčiausiai galite gauti ir pateikti užsakymą filiale, naudodami vieną eilutės komandą:

 git fetch  git checkout test 

Taip pat sukūriau žemiau pateiktą vaizdą, kad galėtumėte bendrinti skirtumus, pamatyti, kaip fetch darbus ir kaip jį pull :

2019

05 сент. Atsakymas pateikiamas Alireza 05.09. 2017-09-05 17:20 '17, 17:20 pm 2017-09-05 17:20

Jei norite klonuoti „Git“ saugyklą, paleiskite:

 git clone <either ssh url /http url> 

Pirmiau minėta komanda tikrina visus filialus, tačiau bus inicijuotas tik master filialas. Jei norite patikrinti kitus filialus, atlikite šiuos veiksmus:

 git checkout -t origin/future_branch (for example) 

Ši komanda tikrina nuotolinį filialą, o vietinis filialo pavadinimas yra tas pats, kaip nuotolinis filialas.

Jei norite atšaukti vietinio filialo pavadinimą kasoje:

 git checkout -t -b enhancement origin/future_branch 

Dabar jūsų vietinio filialo pavadinimas yra enhancement , bet nuotolinio filialo pavadinimas yra future_branch .

Dokumentacija

48
21 янв. atsakymas duotas Madhan Ayyasamy 21 sausis 2013-01-21 13:04 '13, 13:04, 2013-01-21 13:04

Galite pabandyti

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

arba

 git fetch git checkout -b local_branch_name origin/branch_name 
31
24 марта '14 в 16:11 2014-03-24 16:11 atsakymas duotas uma kovo 24 d., 14 val. 16:11 2014-03-24 16:11

Pirma, reikia daryti:

git fetch # Jei nežinote filialo pavadinimo

 git fetch origin branch_name 

Antra, galite patikrinti nuotolinį filialą į vietinį:

 git checkout -b branch_name origin/branch_name 

-b bus sukurtas naujas filialas nurodytame pavadinime iš pasirinkto nuotolinio filialo.

27
18 мая '17 в 16:55 2017-05-18 16:55 Atsakymą pateikė „ Mohideen ibn Mohammed “ gegužės 18 d.

Komandos

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

yra lygūs

  git fetch --all 

ir tada

  git checkout -b fixes_for_dev origin/development 

Abu bus sukurta latest fixes_for_dev development

25
21 апр. atsakymą pateikė sreekumar 21 balandis 2016-04-21 22:10 '16 at 10:10 pm 2016-04-21 22:10

Naudoju šią komandą:

 git checkout --track origin/other_remote_branch 
23
06 сент. atsakymas duotas priyankvex 06 sep . 2017-09-06 17:41 '17, 17:41 pm 2017-09-06 17:41

Jei filialas yra kažkas, išskyrus nuotolinę origin , norėčiau atlikti šiuos veiksmus:

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

Tai patikrins next filialą nuotoliniame upstream serveryje vietiniame filiale, pavadintame second/next . Tai reiškia, kad jei jau turite kitą vietinį skyrių, tai neprieštaraus.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 Atsakymą Kris pateikė kovo 13 d. 13 val. 2013-03-01 13:00

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 atsakymas pateikiamas Inderio Kumar Rathore'ui kovo 14 d. 14 val. 10:00 2014-03-26 10:00

git branch -r sako, kad objekto pavadinimas yra neteisingas, nes šio filialo pavadinimas nėra vietinių „Git“ šakų sąraše. Atnaujinkite vietos filialų sąrašą iš šaltinio su:

 git remote update 

Ir tada bandykite dar kartą patikrinti nuotolinį filialą.

Jis dirbo man.

Manau, kad git fetch traukia visuose nuotoliniuose filialuose, kurių originalus plakatas nenori.

15
06 июня '13 в 15:21 2013-06-06 15:21 atsakymą pateikė webdevguy birželio 06 d. 13 val. 15:21 2013-06-06 15:21

nė vienas iš šių atsakymų man nepadarė. jis dirbo:

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

14
10 июля '18 в 5:11 2018-07-10 05:11 Atsakymą brianyangas pateikia liepos 18 d. 18 val. 5:11 val. 2018-07-10 05:11

git remote show <origin name> komanda parodys visų filialų sąrašą (įskaitant nepažymėtus filialus). Tada galite rasti nuotolinio filialo, kurį norite išgauti, pavadinimą.

Pavyzdys:

 $ git remote show origin 

Naudokite šiuos veiksmus nuotolinių filialų išskyrimui:

 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) 

Pavyzdys:

 $ git fetch origin test:test $ git checkout test 
11
07 янв. Atsakymą pateikė Thushan 07 Jan 2018-01-07 16:12 '18 at 4:12 pm 2018-01-07 16:12

Kiti vaikinai ir mergaitės teikia sprendimus, tačiau galbūt galiu pasakyti, kodėl.

„Git Check“ testas, kuris nieko nedaro

Does nothing nesutampa, bet doesn't work , todėl, kai įvedate „git checkout test“ jūsų terminale ir paspauskite įvesties klavišą, pranešimas nerodomas ir jokios klaidos nėra. Ar aš teisus

Jei atsakymas yra „taip“, galiu jums pasakyti priežastį.

Taip yra todėl, kad jūsų medyje yra failas (arba aplankas), pavadintas „test“.

Kai git checkout xxx suprato,

  • „git“ pirmiausia žiūri į xxx kaip šakos pavadinimą, tačiau nėra jokio šakos pavadinimo testo.
  • Tada Git mano, kad xxx yra kelias, ir, laimei, (arba, deja), yra failas, vadinamas testu. Todėl „ git checkout xxx reiškia atšaukti bet kokius „ xxx failo pakeitimus.
  • Jei nėra failo su pavadinimu xxx , tada Git bandys sukurti xxx pagal kai kurias taisykles. Viena taisyklė yra sukurti filialą su pavadinimu xxx , jei yra remotes/origin/xxx .
8
10 июля '17 в 10:45 2017-07-10 10:45 atsakymas pateikiamas seniūnui liepos 10 d., 17 val. 10:45 2017-07-10 10:45

Buvau įstrigo tokioje situacijoje, kai error: pathspec 'desired-branch' did not match any file(s) known to git. už visus aukščiau pateiktus pasiūlymus. Aš esu „git“ versija 1.8.3.1.

Taigi jis dirbo man :

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

Tai paaiškina tai, kad pastebėjau, kad atsiunčiant nuotolinį filialą jis buvo pasirinktas FETCH_HEAD:

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

Tiesiog paleiskite git checkout su nuotolinio filialo pavadinimu. „Git “ automatiškai sukurs vietinį padalinį, kuris stebi nuotolinį:

 git fetch git checkout test 

Tačiau, jei šis filialo pavadinimas randamas daugiau nei vienoje konsolėje, jis neveiks, nes „Git“ nežino, ką naudoti. Tokiu atveju galite naudoti:

 git checkout --track origin/test 

arba

 git checkout -b test origin/test 

2.19, Git išnagrinėjo checkout.defaultRemote konfigūraciją, kurioje, pašalinant tokį dviprasmybę, nurodoma numatytoji nuotolinio valdymo vertė.

6
13 сент. atsakymą įteikė Eugenijus Yarmash 13 sep . 2018-09-13 15:21 '18, 15:21 pm 2018-09-13 15:21

Norėdami gauti naujai sukurtus filialus

 git fetch 

Perjungti į kitą filialą

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 atsakymą davė Hasib Kamal , kovo 15 d. 18 val. 11:49 2018-03-15 11:49

Galite pradėti stebėti visus ištrintus filialus naudodami šį „bash“ scenarijų:

 #!/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 

Čia taip pat yra vienos eilutės versija:

 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 авг. Atsakymą pateikė OzzyCzech 11 rug . 2017-08-11 15:06 '17, 15:06 2017-08-11 15:06

Jei norite sukurti tuščią aplanką, atlikite šią komandą. Įveskite jį ir naudokite šią komandą:

 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 янв. atsakymą pateikė Mehedi Hasan sausio 01 d 2016-01-01 13:31 '16 at 13:31 2016-01-01 13:31

Gaukite kilmę ir patikrinkite filialą.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 atsakymas pateikiamas Pranavui gegužės 21 d., 18 val. 14:33 2018-05-21 14:33

Jei nuotolinio filialo pavadinimas prasideda nuo specialių simbolių, patikrinimo komandoje turite naudoti atskiras kabutes, nes priešingu atveju git nežino, apie kurį šaką kalbate.

Pavyzdžiui, bandžiau išgauti nuotolinį filialą, pavadintą #9773 tačiau komanda neveikė tinkamai, kaip parodyta toliau pateiktame paveikslėlyje:

2019

07 нояб. atsakymas pateikiamas Ulysses Alves 07 nov. 2018-11-07 14:17 '18, 14:17 pm 2018-11-07 14:17

Kiti klausimai apie „ žymes arba užduoti klausimą