Git dohvati udaljenu granu

Moj kolega i ja radimo na istom repozitorijumu, koji smo tehnički razgranali u dvije grane, od kojih je svaka namijenjena različitim projektima, ali imaju sličnosti, pa ih ponekad želimo poslati natrag master * iz branch .

Međutim, imam branch . Imam pitanje, kako moj kolega može koristiti ovu temu?

Čini se da repo za git clone ne stvara podružnice za njega lokalno, iako vidim da žive u nepristojnom stanju nakon što sam se udario s moje strane.

Također, kada sam u početku napravio granu, učinio sam -b checkout . Niste sigurni je li to važno?

 $ git branch -r origin/HEAD -> origin/master origin/daves_branch origin/discover origin/master $ git fetch origin discover $ git checkout discover 

To su naredbe koje sam izvršio. Ali to definitivno ne radi.

Želim moći provjeriti ovu nit, a zatim poslati i snimiti samo promjene u granama od raznih suradnika ili radnih stanica .

1757
02 марта '12 в 20:06 2012-03-02 20:06 David je postavljen na ožujak 02 '12 u 20:06 2012-03-02 20:06
@ 26 odgovora

Morate stvoriti lokalnu granu koja prati udaljenu granu. Sljedeća naredba stvorit će lokalnu granu pod nazivom daves_branch , prateći podrijetlo udaljene grane / daves_branch . Kada kliknete na promjene, udaljena grana će se ažurirati.

Za najnovije verzije git-a:

 git checkout --track origin/daves_branch 

--track je kratica za git checkout -b [branch] [remotename]/[branch] gdje je [remotename] izvor u ovom slučaju, a [branch] je dvostruko veći, u ovom slučaju daves_branch .

Za git 1.5.6.5 ovo trebate:

 git checkout --track -b daves_branch origin/daves_branch 

Za git 1.7.2.3 i više, ovo je dovoljno (možda je počelo ranije, ali ovo je najranija potvrda da sam uspio brzo pronaći):

 git checkout daves_branch 

Imajte na umu da u najnovijim verzijama git-a, ova naredba neće stvoriti lokalnu granu i odvest će vas u stanje "odvojene GLAVE". Ako želite lokalnu granu, koristite --track . Sve pojedinosti ovdje: http://git-scm.com/book/en/v2/Git-branching-Remote-branches#Tracking-branches

2428
02 марта '12 в 20:45 2012-03-02 20:45 odgovor je dan ralphtheninja 02 ožujak '12 u 20:45 2012-03-02 20:45

Koristio sam fetch nakon čega je uslijedio checkout ...

 git fetch <remote> <rbranch>:<lbranch> git checkout <lbranch> 

... gdje je <rbranch> udaljena grana ili izvor referenca ref, i <lbranch> je još uvijek nepostojeća lokalna grana ili primatelj koju želite pratiti i koji vjerojatno žele imenovati isto kao i udaljenu granu ili izvor ref , To je objašnjeno u opcijama u objašnjenju <refspec> .

Git je tako pametan da automatski završava prvu naredbu ako upišem nakon prvih nekoliko slova udaljene grane. IE: Ne trebam ni specificirati lokalnu granu, Git automatski kopira ime udaljene grane za mene. Hvala Git!

Također, kao odgovor u ovoj sličnoj poruci, SO pokazuje da ako ne nazovete lokalnu podružnicu u fetch , možete je i dalje kreirati kada provjerite pomoću -b zastavice. IE: git fetch <remote> <branch> , a zatim git checkout -b <branch> <remote>/<branch> radi istu stvar kao i moj izvorni odgovor. I, očito, ako vaš repo ima samo jedan daljinski upravljač, možete jednostavno napraviti git checkout <branch> nakon fetch , i stvorit će vam lokalnu podružnicu. EG: Upravo ste klonirali repo i želite provjeriti dodatne grane s konzole.

border=0

Vjerujem da se dio dokumentacije za fetch može kopirati doslovno iz pull . Posebno, odjeljak <refspec> u opcijama je isti. Međutim, ne mislim da fetch nikada neće biti merge , pa ako ostavite stranu primatelja dvotočke praznom, fetch ne bi trebao ništa učiniti .

NAPOMENA. Ova vrijednost git fetch <remote> <refspec> nije prikladna za git fetch <remote> <refspec>: tako da neće učiniti ništa, ali git fetch <remote> <tag> ista je kao git fetch <remote> <tag>:<tag> , koji bi trebao kopirati daljinski <tag> lokalno.

Mislim da je ovo korisno ako želite kopirati udaljenu poslovnicu lokalno, ali to ne mora odmah provjeriti. Inače, sada koristim prihvaćeni odgovor iznad , koji je detaljno objašnjen u prvom dijelu dizajna , a zatim u odjeljku opcija pod objašnjenjem --track , budući da je ovo 1-liner. Pa ... kao jedan liner, jer još uvijek morate prvo pokrenuti git fetch <remote> .

FYI: redoslijed <refspecs> (izvor: odredište) objašnjava fancy pre Git -1.7 metodu za uklanjanje izbrisanih grana , IE: nemojte kliknuti na odredište refspec.

792
19 апр. Odgovor dao je Mark Mikofski 19. travnja 2013-04-19 03:45 '13 u 3:45 2013-04-19 03:45

Ako pokušavate "provjeriti" novu udaljenu granu (koja postoji samo na udaljenom, ali ne i lokalnom), to je ono što trebate:

 git fetch origin git checkout --track origin/<remote_branch_name> 

Pretpostavlja se da želite izvući iz izvora. Ako ne, zamijenite izvor udaljenim imenom.

292
17 мая '13 в 15:14 2013-05-17 15:14 odgovor je dat paneer_tikka Svibanj 17 '13 u 15:14 2013-05-17 15:14

Da bi testirao myBranch, koji postoji na daljinu, a ne lokalno, to je uspjelo za mene:

 git fetch --all git checkout myBranch 

Primio sam ovu poruku:

 Branch myBranch set up to track remote branch myBranch from origin Switched to a new branch 'myBranch' 
93
12 нояб. Odgovor je dao David 12. studenog. 2013-11-12 06:36 '13 u 6:36 2013-11-12 06:36

Koristite git branch -a (i lokalne i udaljene grane) ili git branch -r (samo udaljene grane) da biste vidjeli sve konzole i njihove grane. Tada možete napraviti git checkout -t remotes/repo/branch na udaljenom računalu i stvoriti lokalnu podružnicu.

Tu je i naredba git ls-remote za pregled svih veza i oznaka za ovaj daljinski upravljač.

41
02 марта '12 в 20:16 2012-03-02 20:16 odgovor je dan Daniel Lee 02 Ožujak '12 u 20:16 2012-03-02 20:16

Naziv i pitanje su zbunjeni:

  • Git dohvati udaljenu granu
  • Kako moj kolega može preusmjeriti ovu granu.

Ako je pitanje kako mogu dobiti udaljenu poslovnicu ili kako provjeriti udaljenu granu, jednostavnije rješenje je:

Uz git (> = 1.6.6) možete koristiti:

 git checkout <branch_name> 

Ako lokalno <branch_name> nije pronađeno, ali postoji grana za praćenje na točno jednom udaljenom mjestu s odgovarajućim imenom, smatrajte je ekvivalentnom:

 git checkout -b <branch_name> --track <remote>/<branch_name> 

pogledajte dokumentaciju za git checkout

Za vašeg prijatelja:

 $ git checkout discover Branch discover set up to track remote branch discover Switched to a new branch 'discover' 
34
31 марта '14 в 13:48 2014-03-31 13:48 odgovor je dao Guillaume Vincent 31. ožujka 2014. u 13:48 2014-03-31 13:48
 git checkout -b serverfix origin/serverfix 

Ovo je prilično uobičajena operacija u kojoj git daje skraćeni izraz: -track:

 git checkout --track origin/serverfix 

Zapravo, toliko je uobičajena pojava da postoji oznaka za ovu oznaku. Ako ime grane koju pokušavate provjeriti (a) ne postoji i (b) točno odgovara nazivu na samo jednom udaljenom poslužitelju, git će za vas stvoriti granu za praćenje:

 git checkout serverfix 

Da biste postavili lokalnu podružnicu s drugačijim nazivom od udaljene grane, možete jednostavno koristiti prvu verziju s drugim nazivom lokalne podružnice:

 git checkout -b sf origin/serverfix 

Sada će vaš lokalni sf grana automatski izvući izvor / serverfix.

Izvor: Pro git 2. izdanje, napisali Scott Chacon i Ben Straub (čitanje proreza)

25
18 марта '16 в 3:21 2016-03-18 03:21 odgovor je dao ManuelSchneid3r 18. ožujka '16 u 3:21 2016-03-18 03:21

Koristeći ovu jednostavnu naredbu:

 git checkout -b 'your_branch' origin/'remote branch' 
19
18 мая '17 в 12:38 2017-05-18 12:38 odgovor je dao Karthik damodara 18. svibnja 2006. u 12:38 2017-05-18 12:38
 git fetch git branch -r git checkout <branch_name> 
13
04 дек. Odgovor dao John Rodriguez 4. prosinca 2013-12-04 23:53 '13 u 23:53 2013-12-04 23:53

Možete dobiti i provjeriti udaljenu granu jednom kadrom: -

 git fetch  git checkout the-branch-name 
12
25 марта '15 в 9:43 2015-03-25 09:43 odgovor je dao Kumar Sambhav 25. ožujka / siječnja u 9:43 2015-03-25 09:43

Najlakši način da to učinite, barem za mene:

 git fetch origin <branchName> 
12
06 окт. odgovor dao James Rochabrun 6. listopada 2017-10-06 12:26 '17 u 12:26 sati 2017-10-06 12:26

Tipkala sam

 git checkout <branch_name> 

i dobio

 Branch <branch_name> set up to track remote branch <branch_name> from origin. Switched to a new branch '<branch_name>' 
10
17 окт. odgovor je dat Guillaume Guillaume 17. listopada. 2013-10-17 03:07 '13 u 3:07 2013-10-17 03:07

S vremena na vrijeme od vas se traži da se ne mučite s vodećom granom i da radite samo s udaljenom granom (kao što sam tražio). Dakle, sve što trebate je udaljena grana.

Dakle, za kloniranje udaljene grane odvojeno (bez mastera), učinite to

 git clone url --branch remote_branch_name 

gdje je ime daljinskog_druga ime udaljene grane

Na primjer

 git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15 

To će vam omogućiti da klonirate udaljenu granu u lokalnu granu s imenom udaljene grane.

Sada, ako proslijedite kôd i kliknete, kôd će biti poslan samo na tu temu.

9
06 февр. odgovor je dao ganezdragon 06. veljače. 2015-02-06 08:11 '15 u 8:11 sati 2015-02-06 08:11

git fetch --all git checkout <branch name>

7
20 нояб. odgovor Jerome Anthony 20. studenog 2017-11-20 03:42 '17 u 3:42 2017-11-20 03:42

Što mi je pomoglo

1) Za prikaz svih dostupnih udaljenih grana (na primjer, "ime-udaljene grane")

 git branch -r 

2) Stvorite lokalnu granu koristeći naziv udaljene grane.

 git fetch  git checkout 'remote-branch-name' 
6
17 сент. odgovor je dao Arlan T 17 sep . 2018-09-17 05:16 '18 u 5:16 2018-09-17 05:16

git fetch git checkout <your friend branch name> treba pomoći

4
25 апр. odgovor je dan tambakoo 25. travnja 2018-04-25 14:37 '18 u 2:37 pm 2018-04-25 14:37

Pretpostavimo da je vaša konzola git@xyz.git i da trebate svoju granu random_branch. Proces bi trebao biti sljedeći:

  1. Prvo provjerite popis daljinskih upravljača

    git remote -v

  2. Ako nemate git@xyz.git uklonjen u izlazu naredbe gore, trebali biste ga dodati

    git remote add xyz git@xyz.git

  3. Sada možete dobiti sadržaj ovog daljinskog upravljača

    git fetch xyz

  4. Sada provjerite granu ovog daljinskog upravljača

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Provjerite popis grana do

    git branch -a

Lokalna grana my_copy_random_branch pratit će granu random_branch vaše konzole.

4
06 марта '18 в 19:59 2018-03-06 19:59 odgovor je dan zafar142003 6. ožujka u 19:59 sati 2018-03-06 19:59

Ako već znate svoju udaljenu granu, na primjer ...

 git remote => One => Two 

i znate ime podružnice koju želite provjeriti ex. br1.2.3.4 , učinite

 git fetch One => returns all meta data of remote ie the branch name in question. 

sve što je ostalo je provjeriti granu

 git checkout br.1.2.3.4 

Zatim otvorite sve nove grane.

3
26 июня '15 в 20:51 2015-06-26 20:51 odgovor je dao SoEzPz 26. lipnja '15 u 20:51 2015-06-26 20:51

samo pokušaj

$ git potječe podrijetlo your_branch_name

3
12 дек. odgovor dat Rizo 12. prosinca 2017-12-12 22:47 '17 u 22:47 2017-12-12 22:47

Koraci su sljedeći:

  • git fetch origin ili git fetch --all , to će izbrisati sve izbrisane grane u vašem lokalnom, a zatim drugu mogućnost koju možete obraditi.

  • git checkout --track origin/<The_remote_branch you want to switch over>

Zatim radite na ovoj niti i možete provjeriti jeste li u ovoj niti ili ne upisivanjem

 git branch 

Pokazuje granu u kojoj se nalazite.

3
26 дек. odgovor je dat Samu 26. prosinca. 2013-12-26 13:09 '13 u 13:09 2013-12-26 13:09

Ako imate klonirano spremište s --depth 1, mnoge od navedenih naredbi neće raditi. Na primjer, pogledajte ovdje

 % git clone --depth 1 https://github.com/repo/code Cloning into 'code'... cd code remote: Counting objects: 1778, done. remote: Compressing objects: 100% (1105/1105), done. remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0 Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done. Resolving deltas: 100% (87/87), done. Checking connectivity... done. Checking out files: 100% (1215/1215), done. % cd code % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. % git fetch origin other_branch remote: Counting objects: 47289, done. remote: Compressing objects: 100% (15906/15906), done. remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0 Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done. Resolving deltas: 100% (30151/30151), completed with 362 local objects. From https://github.com/repo/code * branch other_branch-> FETCH_HEAD % git checkout other_branch error: pathspec 'other_branch' did not match any file(s) known to git. % 

U ovom slučaju, otkazao bih repo, ali možda postoje i druge metode, na primjer, git plitak klon (klon - dubina) preskače udaljene grane

2
25 янв. odgovor je dao Colin D 25. siječnja 2018-01-25 00:21 '18 u 0:21 201-01-25 00:21

Provjerite .git/config , što je praćenje prisutno u ekstrakciji za ovu konzolu.

 [remote "randomRemote"] url = git@github.com:someUser/someRepo.git fetch = +refs/heads/*:refs/remotes/randomRemote/* 

Ako ima heads/* pokazuje na randomRemote/* , kada pokrenete git fetch randomRemote izvući će sve grane. Tada možete samo provjeriti ovu nit.

Inače,

  • Morate dodati izbrisane grane praćenju. Nakon toga pokrenite .git/config . Vi ćete razumjeti. git daljinski ogranak set --adad randomRemote randomBranch

  • Pokreni git fetch randomRemote . To će dovesti do udaljene grane.

  • Sada možete pokrenuti git checkout randomBranch

2
01 февр. Odgovor daje Vamshi Suram 01. veljače. 2017-02-01 17:29 '17 u 17:29 2017-02-01 17:29

git branch <name> --track origin/<name>

1
11 марта '18 в 21:02 2018-03-11 21:02 Odgovor dao Chris F Carroll 11. ožujka u 21:02 2018-03-11 21:02

Koristite 'git pull' da bi vaše grane bile odvojene. Koristit ću stvarna repo imena i grane kako bih pomogao, jer je "lbranch" i "rbranch" teško dešifrirati.

Neka koristi:

myteam.unfuddle.com = udaljeni poslužitelj git tlc = unuddle račun projekta gdje repo postoji daves_branch = naziv udaljene grane

Vi ili vaš kolega možete pokrenuti ovo da biste izvukli samo svoju granu, bez obzira na to koliko je ogranaka:

 git init git pull git@myteam.unfuddle.com: myteam / tlc daves_branch: refs / remotes / origin / daves_branch
1
23 мая '13 в 0:10 2013-05-23 00:10 odgovor je dao Andrew 23. svibnja '13. u 0:10 2013-05-23 00:10

Jednostavna naredba - "git checkout remote_branch_name" pomoći će vam u stvaranju lokalne grane koja ima sve promjene u udaljenoj grani.

0
19 янв. Odgovor dao je SIjeesh Kattumunda 19. siječnja 2018-01-19 15:34 '18 u 15:34 2018-01-19 15:34
 git checkout -b branch_name git pull remote_name branch_name 
-1
22 янв. odgovor je dobio Leon 22 jan. 2019-01-22 13:43 '19 u 13:43 sati 2019-01-22 13:43

Ostala pitanja o oznakama ili Ask a Question