Vraag Git remote branch ophalen


Mijn collega en ik werken aan dezelfde opslagplaats. We hebben het technisch in twee takken verdeeld voor verschillende projecten, maar ze hebben overeenkomsten, dus we willen soms teruggaan naar de meester van het filiaal.

Ik heb echter de vestiging. Mijn vraag is, hoe kan mijn collega specifiek aan die branche trekken? EEN git clone van de repo lijkt de takken lokaal niet voor hem te creëren, hoewel ik ze kan zien leven na een duw op mijn uiteinde.

Ook toen ik de tak maakte die ik oorspronkelijk had gemaakt -b checkout. Weet je niet zeker of dat veel verschil maakt?

iMac:test_solar dave$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

git fetch origin discover
git checkout discover

Dit zijn de opdrachten die ik heb uitgevoerd. Maar het werkt zeker niet. Ik wil die tak kunnen bekijken en vervolgens alleen de takken van andere medewerkers of werkstations pushen en terugverplanten.


1597
2018-03-02 17:06


oorsprong


antwoorden:


U moet een lokale branch maken die een externe branch volgt. Met de volgende opdracht maakt u een lokale vertakking met de naam daves_branch, het volgen van de remote branch origin / daves_branch. Wanneer u op uw wijzigingen drukt, wordt de externe vestiging bijgewerkt.

Voor de meeste versies van git:

git checkout --track origin/daves_branch

--track is steno voor git checkout -b [branch] [remotename]/[branch] waar [remotename] is oorsprong in dit geval is [branch] twee keer hetzelfde, daves_branch in dit geval.

Voor git 1.5.6.5 had je dit nodig:

git checkout --track -b daves_branch origin/daves_branch

Voor git 1.7.2.3 en hoger is dit voldoende (misschien eerder begonnen, maar dit is de vroegste bevestiging die ik snel kon vinden):

git checkout daves_branch

Merk op dat met recente git-versies dit commando geen lokale branch zal creëren en je in een 'loose HEAD'-staat brengt. Als u een lokaal filiaal wilt, gebruikt u de --track keuze. Volledige details hier: http://git-scm.com/book/en/v2/Git-Branching-Remote-Branches#Tracking-Branches


2215
2018-03-02 17:45



ik heb gebruikt fetch gevolgd door checkout ...

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

... waar <rbranch> is de remote branch of bron ref en <lbranch> is het tot nu toe niet bestaand lokale vestiging of bestemming ref je wilt volgen en welke je waarschijnlijk hetzelfde wilt noemen als de remote branch of source ref. Dit wordt uitgelegd onder opties in de uitleg van <refspec>.

Git is zo slim dat het automatisch de eerste opdracht voltooit als ik tab na de eerste paar letters van de afgelegen tak. DWZ: ik hoef zelfs de lokale vestiging niet te noemen, Git kopieert automatisch de naam van de remote branch voor mij. Bedankt Git!

Ook als het antwoord in dit vergelijkbare SO bericht wordt weergegeven, als u het lokale filiaal geen naam geeft fetch, je kunt het nog steeds maken wanneer je het bekijkt met behulp van de -b vlag. D.W.Z:  git fetch <remote> <branch> gevolgd door git checkout -b <branch> <remote>/<branch> doet precies hetzelfde als mijn eerste antwoord. En blijkbaar als je repo heeft maar een op afstand, dan kun je het gewoon doen git checkout <branch> na fetch en het zal een lokale vestiging voor je creëren. Bijv: Je hebt zojuist een repo gekloond en wilt aanvullende bijkantoren van de afstandsbediening bekijken.

Ik geloof dat sommige van de documentatie voor fetch mogelijk letterlijk overgenomen van pull. In het bijzonder het gedeelte over <refspec> in opties is hetzelfde. Ik geloof dat echter niet fetch zal ooit merge, zodat als u de bestemmingskant van de dubbele punt leeg laat fetch  zou niets moeten doen.

Let daar op git fetch <remote> <refspec> is kort voor git fetch <remote> <refspec>: wat daarom niets zou doen, maar git fetch <remote> <tag> is hetzelfde als git fetch <remote> <tag>:<tag> die de afstandsbediening zou moeten kopiëren <tag> lokaal.

Ik denk dat dit alleen nuttig is als je een filiaal op afstand lokaal wilt kopiëren, maar niet per se meteen wilt bekijken. Anders zou ik nu gebruiken het geaccepteerde antwoord hierboven, wat in detail wordt uitgelegd in het eerste deel van de afrekenen beschrijving en later in de opties sectie onder de uitleg van --track, omdat het een 1-voering is. Goed... een soort van 1-voering, omdat je dat zou doen nog steeds moeten rennen git fetch <remote> eerste.

Ter info: de volgorde van de <refspecs> (bron: destination) verklaart de bizarre pre Git-1.7-methode voor verwijderen van externe vestigingen. IE: duwen niets in de bestemming refspec.


740
2018-04-19 00:45



Als u een nieuwe externe vertakking probeert uit te checken (die alleen op de externe locatie bestaat, maar niet lokaal), heeft u dit nodig:

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

Dit gaat ervan uit dat je wilt ophalen van oorsprong. Zo niet, vervang dan oorsprong bij jouw afgelegen naam.


270
2018-05-17 12:14



MijnBranch uitchecken die op afstand bestaat en niet lokaal is - Dit werkte voor mij:

git fetch --all
git checkout myBranch

Ik kreeg deze boodschap:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

88
2017-11-12 03:36



Gebruik git branch -a (zowel lokale als externe filialen) of git branch -r (alleen remote branches) om alle afstandsbedieningen en hun vertakkingen te zien. U kunt dan een git checkout -t remotes/repo/branch naar de afstandsbediening en maak een lokale vestiging.

Er is ook een opdracht git ls-remote om alle refs en tags voor die afstandsbediening te bekijken.


37
2018-03-02 17:16



De titel en de vraag zijn in de war:

  • Git remote branch ophalen
  • hoe kan mijn collega dat filiaal specifiek trekken.

Als de vraag is hoe ik een remote branch kan laten werken of hoe ik een remote branch moet afhandelen, is een eenvoudigere oplossing:

Met git (> = 1.6.6) kun je gebruiken:

git checkout <branch_name>

Als lokaal <branch_name> wordt niet gevonden, maar er bestaat wel een trackingtak in precies één afstandsbediening met een overeenkomende naam, behandelen als gelijk aan:

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

zie documentatie voor git checkout

Voor je vriend:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

33
2018-03-31 10:48



git checkout -b serverfix origin/serverfix

Dit is een veelgebruikte handeling die git de -track-afkorting biedt:

git checkout --track origin/serverfix

In feite is dit zo gewoon dat er zelfs een snelkoppeling voor die snelkoppeling is. Als de filenaam die u probeert af te halen (a) niet bestaat en (b) exact overeenkomt met een naam op slechts één afstandsbediening, maakt Git een trackingtak voor u aan:

git checkout serverfix

Als u een lokale vertakking wilt instellen met een andere naam dan de externe vertakking, kunt u eenvoudig de eerste versie met een andere lokale vertakkingsnaam gebruiken:

git checkout -b sf origin/serverfix

Nu haalt uw lokale branch sf automatisch uit origin / serverfix.

Bron: Pro Git 2nd Edition, geschreven door Scott Chacon en Ben Straub(gesneden voor leesbaarheid)


24
2018-03-18 00:21



git fetch

git branch -r

git checkout <branch_name>

12
2017-12-04 20:53



Met deze eenvoudige opdracht:

git checkout -b 'your_branch' origin/'remote branch'

11
2018-05-18 09:38



U kunt het externe filiaal ook in één keer ophalen en afrekenen: -

git fetch && git checkout the-branch-name

10
2018-03-25 06:43



Ik typte

git checkout <branch_name>

en kreeg

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'

9
2017-10-17 00:07