Da li postojeća git za praćenje Git-a ima udaljenu granu?

Znam kako stvoriti novu granu koja prati udaljene grane, ali kako napraviti postojeću granu podružnice udaljenom granom?

Znam da mogu jednostavno urediti .git/config datoteku, ali čini se da bi trebao biti lakši način.

3222
06 февр. Pat Notz postavljen 6. veljače 2009-02-06 18:14 '09 u 18:14 2009-02-06 18:14
@ 19 odgovora

S obzirom na ogranak foo i udaljeno upstream :

Počevši od Git 1.8.0:

 git branch -u upstream/foo 

Ili, ako lokalna ogranak foo nije trenutna grana:

 git branch -u upstream/foo foo 

Ili, ako želite unijeti dulje naredbe, one su ekvivalentne gore navedenim:

 git branch --set-upstream-to=upstream/foo git branch --set-upstream-to=upstream/foo foo 

Počevši od Git 1.7.0:

 git branch --set-upstream foo upstream/foo 

bilješke:

  • Sve gore navedene naredbe prisilit će lokalnu foo granu da prati udaljenu foo granu iz udaljenog upstream .
  • Stara (1.7.x) sintaksa se ne preporučuje u korist nove (1. 8+) sintakse. Nova sintaksa trebala bi biti intuitivnija i lakša za pamćenje.
  • Definicija uzvodno neće uspjeti s novostvorenim daljinskim upravljačima koji nisu odabrani. U tom slučaju, unaprijed pokrenite git fetch upstream .

Vidi također: Zašto bih sve vrijeme radila '- set-upstream'?

3917
18 февр. Odgovoriti Dan Molding 18. veljače 2010-02-18 06:06 '10 u 6:06 2010-02-18 06:06

Možete učiniti sljedeće (uz pretpostavku da ste izvađeni u glavno računalo i želite ga poslati u udaljenu glavnu granu):

Podesite daljinski upravljač ako ga već nemate.

 git remote add origin ssh://... 

Sada konfigurirajte čarobnjaka da zna za praćenje:

 git config branch.master.remote origin git config branch.master.merge refs/heads/master 

I kliknite:

 git push origin master 
222
09 марта '09 в 11:50 2009-03-09 11:50 je odgovorio Paul Hedderly 9. ožujka u 11:50 2009-03-09 11:50

To činim kao nuspojava pritiska s opcijom -u , kao u

 $ git push -u origin branch-name 

Ekvivalentna duga opcija - --set-upstream .

git-branch naredba također razumije --set-upstream , ali njezina uporaba može biti pogrešna. Verzija 1.8.0 mijenja sučelje.

git branch --set-upstream zastario i može se ukloniti u relativno dalekoj budućnosti. git branch [-u|--set-upstream-to] uveden je s razumnijim redom argumenata.

hellip;

Bilo je primamljivo reći git branch --set-upstream origin/master , ali on kaže Gitu da naredi lokalnoj podružnici "origin / master" da se integrira s trenutnom provjerenom granom, što je malo vjerojatno za korisnika. Opcija je zastarjela; umjesto toga, koristite novi --set-upstream-to (kratki i slatki -u ).

Recimo da imate lokalnu foo podružnicu i želite da ona obrađuje granu s istim imenom kao i njegov upstream. Učinite to s

 $ git branch foo $ git branch --set-upstream-to=origin/foo 

ili samo

 $ git branch --set-upstream-to=origin/foo foo 
141
02 окт. odgovor koji je dao Greg Bacon 02. 2012-10-02 19:24 '12 u 19:24 2012-10-02 19:24

Možete pronaći alat git_remote_branch . Nudi jednostavne naredbe za stvaranje, objavljivanje, brisanje, praćenje i preimenovanje izbrisanih grana. Jedna lijepa značajka je da možete upitati naredbu grb kako biste objasnili koje će git naredbe izvršiti.

51
06 февр. Odgovor koji je dao James Mead 6. veljače. 2009-02-06 20:11 '09 u 20:11 2009-02-06 20:11

Zapravo za prihvaćeni odgovor na djelo:

49
23 нояб. Odgovor je dan Jež 23. studenog. 2010-11-23 15:08 '10 u 15:08 2010-11-23 15:08

Vjerujem da natrag u Git 1.5.x možete napraviti lokalnu granu $BRANCH pratiti udaljeni origin/$BRANCH grana kao što je ovaj.

S obzirom da postoje $BRANCH i origin/$BRANCH , a trenutno niste označili $BRANCH (odspojite ako postoji):

 git branch -f --track $BRANCH origin/$BRANCH 

Ovo ponovno $BRANCH kao granu za praćenje. -f sila stvaranje, unatoč već postojećoj $BRANCH . --track nije obavezan ako su postavljene normalne postavke (tj. branch.autosetupmerge git -config branch.autosetupmerge ).

Imajte na umu da ako origin/$BRANCH još ne postoji, možete ga kreirati tako da gurnete lokalno $BRANCH u udaljeno spremište sa:

 git push origin $BRANCH 

Slijedite prethodnu naredbu da gurnete lokalnu granu u granu za praćenje.

42
28 июля '10 в 12:33 2010-07-28 12:33 odgovor je dao wu-lee 28. srpnja '10 u 12:33 2010-07-28 12:33

1 - ažuriranje lokalnih metapodataka pomoću: git fetch --all

2019

Provjerite jeste li pokrenuli:

 git config push.default tracking 

da ne bude problema

22
30 авг. odgovor je dat romanlv 30 aug. 2011-08-30 00:38 '11 u 0:38 2011-08-30 00:38

Uređivanje .git/config je vjerojatno najlakši i najbrži način. To je ono što Git naredbe rade za upravljanje udaljenim granama.

Ako ne želite ručno raditi s nečim ručno (a to nije tako teško), uvijek možete koristiti git config za to ... ali opet, to je samo uređivanje .git/config datoteke.

Naravno, postoje načini za automatsko praćenje udaljene grane prilikom korištenja git checkout (na primjer, prosljeđivanje zastavice --track ), ali ove naredbe rade s novim granama, a ne s postojećim.

21
06 февр. odgovor je dat mipadi 06. veljače. 2009-02-06 18:17 '09 u 18:17 2009-02-06 18:17

U vrlo kratkom roku

 git branch --set-upstream yourLocalBranchName origin/develop 

To će uzrokovati da vaše yourLocalBranchName prati udaljenu granu pod nazivom develop .

16
09 окт. odgovor je dan MadNik 09 okt. 2012-10-09 10:19 '12 u 10:19 2012-10-09 10:19

Za 1.6.x to se može učiniti pomoću alata git_remote_branch :

 grb track foo upstream 

To će uzrokovati da Git napravi stazu foo upstream/foo .

14
01 июня '10 в 5:23 2010-06-01 05:23 odgovor je dan wik 01 lipanj '10 u 5:23 AM 2010-06-01 05:23

Koristite opciju "--track"

  • Nakon git pull :

    git checkout --track <remote-branch-name>

  • ili:

    git fetch git checkout <branch-name>

8
02 авг. Odgovor je dao Loukan ElKadi 02. kolovoza. 2016-08-02 13:23 '16 u 13:23 2016-08-02 13:23

Ovdje, pomoću github i git version 2.1.4 , samo pokrenite:

 $ git clone git@github.com:user/repo.git 

A konzole se šalju putem itelsefa, čak i ako nisu lokalno povezane:

 $ git remote show origin * remote origin Fetch URL: git@github.com:user/repo.git Push URL: git@github.com:user/repo.git HEAD branch: master Remote branches: develop tracked <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< master tracked Local branch configured for 'git pull': master merges with remote master Local ref configured for 'git push': master pushes to master (up to date) 

Ali, naravno, još uvijek nema lokalne podružnice:

 $ git branch * master <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 

Vidi? Sada, ako samo napravite razvoj, automatski će napraviti magiju:

 $ git checkout develop Branch develop set up to track remote branch develop from origin. Switched to a new branch 'develop' 

Tako jednostavno!


Sažetak. Samo pokrenite sljedeće dvije naredbe:

 $ git clone git@github.com:user/repo.git $ git checkout develop 
8
30 нояб. Odgovor je dao dr. Beco 30. studenog. 2015-11-30 02:04 '15 u 2:04 2015-11-30 02:04

Da biste stvorili novu granu, možemo koristiti sljedeću naredbu.

  git checkout - track -b primjer izvornosti / primjer 
Za već kreiranu granu da kreira vezu između daljinskog upravljača, a zatim iz ove grane, koristite sljedeću naredbu

  git grana -u podrijetlo / daljinsko-granski-ime 
6
20 апр. odgovor od jithu reddy Apr 20 2017-04-20 13:24 '17 u 13:24 2017-04-20 13:24

Koristim sljedeću naredbu (pretpostavimo da je ime vaše lokalne podružnice "branch-name-local", a ime udaljene grane "branch-name-remote"):

 $ git branch --set-upstream-to=origin/branch-name-remote branch-name-local 

Ako i lokalna i udaljena podružnica imaju isto ime, jednostavno učinite sljedeće:

 $ git branch --set-upstream-to=origin/branch-name branch-name 
5
22 дек. Odgovor je dat yrazlik 22. prosinca. 2015-12-22 12:46 '15 u 12:46 2015-12-22 12:46

Na neki način, pokušao sam dodati ogranak za daljinsko praćenje u postojeću granu, ali nisam imao pristup tom udaljenom repozitoriju u sustavu, gdje sam htio dodati ovu granu daljinskog praćenja (jer često kopiram ovu repo preko sneakernet na drugi sustav koji ima pristup za guranje daljinskog upravljača). Otkrio sam da ne postoji način da se prisilno doda udaljena grana u lokalnu koja još nije bila izvađena (tako da lokalna nije znala da grana postoji na udaljenom računalu, a ja bih dobio pogrešku: the requested upstream branch 'origin/remotebranchname' does not exist ).

Kao rezultat toga, uspio sam dodati novu, prethodno nepoznatu, udaljenu granu (bez odabira), dodajući novu datoteku zaglavlja u .git/refs/remotes/origin/remotebranchname , a zatim kopiranje ref (očna jabučica bila je najbrža, loma, kao što je bila; - ) iz sustava s pristupom izvornom repu na radnu stanicu (s lokalnim repoom kojem sam dodao udaljenu granu).

Nakon što je to učinjeno, mogao sam koristiti git branch --set-upstream-to=origin/remotebranchname

4
05 окт. odgovor je dat Ville 05 oct. 2015-10-05 09:10 '15 u 9:10 2015-10-05 09:10

Ovo nije izravan odgovor na ovo pitanje, ali sam htjela ostaviti poruku za svakoga tko bi mogao imati isti problem kao i ja kad pokušam postaviti granu uzvodno.

Budite oprezni s push.default .

Sa starijim verzijama git-a, zadano je podudaranje , što bi uzrokovalo vrlo nepoželjno ponašanje, ako imate, na primjer:

Lokalno praćenje mastera za početak / master

Praćenje udaljene uzvodne grane za uzvodno / primarno

Ako ste pokušali "git klik" kada je u "upstream" grana s push.default mapping, git će automatski pokušati spojiti lokalne "master" grana u "upstream" / master, uzrokujući puno kaosa.

To daje razumnije ponašanje:

git config - globalno push.default uzvodno

4
21 мая '16 в 15:53 2016-05-21 15:53 odgovor je dao Tom Mettam 21. svibnja '16 u 15:53 2016-05-21 15:53

ili jednostavno:

prebacite se na granu ako već niste u njoj:

 [za]$ git checkout branch_name 

za pokretanje

 [za]$ git branch --set-upstream origin branch_name Branch origin set up to track local branch brnach_name by rebasing. 

i spremni ste:

  [za]$ git push origin branch_name 

Možete alawys pogledati konfiguracijsku datoteku da biste vidjeli što prati tako da pokrenete:

  [za]$ git config -e 

Također je lijepo znati, pokazuje koje se grane prate i koje nisu. :

  [za]$ git remote show origin 
3
07 окт. odgovor je dan zee Oct 07 2016-10-07 19:20 '16 u 19:20 2016-10-07 19:20

I to će raditi.

 git branch --set-upstream-to=/< remote>/< branch> < localbranch> 
-1
22 июня '16 в 19:37 2016-06-22 19:37 Odgovor je dao Abhi 22. lipnja '16. U 19:37 2016-06-22 19:37

Pogledajte ostala pitanja o oznaka ili Postavite pitanje