Vraag Hoe bekijk ik een remote Git branch?


Iemand duwde een tak genaamd test met git push origin test naar een gedeelde repository. Ik kan de tak zien met git branch -r.

Nu probeer ik de afstandsbediening te bekijken test tak.

Ik heb geprobeerd:

  • git checkout test wat niets doet

  • git checkout origin/test geeft * (no branch). Dat is verwarrend. Hoe kan ik op "geen filiaal" zijn?

Hoe bekijk ik een remote Git branch?


5300
2017-11-23 14:23


oorsprong


antwoorden:


Bijwerken

Jakub's antwoord verbetert dit eigenlijk. Met Git-versies ≥ 1.6.6 kun je gewoon:

git fetch
git checkout test

(Gebruiker masukomi wijst daar onder git checkout test zal NIET werken in moderne git als je meerdere afstandsbedieningen hebt. Gebruik in dit geval git checkout -b test <name of remote>/test).

Oud antwoord

Voordat u lokaal aan een remote branch kunt werken, moet u dit ophalen zoals wordt aangeroepen in de onderstaande antwoorden.

Om een ​​filiaal te halen, hoeft u alleen maar:

git fetch origin

Hiermee haal je alle remote branches voor je op. U kunt de takken zien die beschikbaar zijn om af te rekenen met:

git branch -v -a

Met de remote branches in de hand, moet je nu de branch bekijken waarin je geïnteresseerd bent, en je een lokaal werkkopie geven:

git checkout -b test origin/test

7346
2017-11-23 14:26



Kanttekening: Met moderne Git (> = 1.6.6), kunt u alleen gebruiken

git checkout test

(merk op dat het 'test' is en niet 'oorsprong / test') om magisch uit te voeren DWIM-mery en maak lokale branch 'test' voor u, waarbij stroomopwaarts remote-tracking 'oorsprong / test' van branch zou zijn.


De * (no branch) in git branch uitvoer betekent dat u zich op een niet nader genoemde vertakking bevindt, in de zogenaamde "vrijgemaakte HEAD" -status (HEAD verwijst rechtstreeks naar commit en is geen symbolische verwijzing naar een lokale branch). Als je een aantal commits op dit niet nader genoemde filiaal hebt gedaan, kun je altijd lokale vertakking van de huidige commit maken:

git checkout -b test HEAD

1088
2017-11-24 00:17



In dit geval wilt u waarschijnlijk een lokale maken test tak die de afstandsbediening volgt test tak:

$ git branch test origin/test

In eerdere versies van git, je had een expliciete nodig --track optie, maar dat is nu de standaard wanneer u een vertakking aftakt.


475
2017-11-23 14:27



Geaccepteerd antwoord werkt niet voor jou?

Terwijl het eerste en het geselecteerde antwoord technisch is correct, is er de mogelijkheid dat je nog niet alle objecten en refs hebt opgehaald uit de externe repository. Als dat het geval is, ontvangt u de volgende foutmelding:

$ git checkout -b remote_branch origin/remote_branch

fataal: git checkout: het bijwerken van paden is incompatibel met het schakelen tussen filialen.
  Bent u van plan om 'origin / remote_branch' uit te checken, wat niet als commit kan worden opgelost?

Oplossing

Als u dit bericht ontvangt, moet u eerst een git fetch origin waar origin is de naam van de externe repository voorafgaand aan het uitvoeren git checkout remote_branch. Hier is een volledig voorbeeld met antwoorden:

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

Zoals je kunt zien, rennen git fetch origin alle externe filialen opgehaald die we nog niet hadden ingesteld om te volgen op onze lokale machine. Vanaf daar, omdat we nu een referentie hebben naar de remote branch, kunnen we gewoon rennen git checkout remote_branch en we profiteren van de voordelen van tracking op afstand.


390
2017-12-07 20:52



Ik heb de bovenstaande oplossing geprobeerd, maar het werkte niet. Probeer dit, het werkt:

git fetch origin 'remote_branch':'local_branch_name'

Hiermee wordt de externe vertakking opgehaald en wordt een nieuwe lokale vertakking (als deze nog niet bestaat) met naam gemaakt local_branch_nameen volg de afstandsbediening die erin zit.


175
2017-10-18 05:55



Dit zal DWIM voor een niet-benoemde oorsprong op afstand (documentatie):

$ git checkout -t remote_name/remote_branch

Als u een nieuwe afstandsbediening wilt toevoegen, moet u eerst het volgende doen:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

De eerste vertelt Git dat de afstandsbediening bestaat, de tweede krijgt de commits.


100
2018-04-27 22:37



Gebruik:

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

Andere antwoorden werken niet met het moderne Git in mijn goedaardige geval. Mogelijk moet u eerst de pull-up maken als de externe vertakking nieuw is, maar ik heb die casus niet gecontroleerd.


89
2018-02-21 10:58



Om een ​​Git-repository te klonen, doe je:

git clone <either ssh url /http url>

Met het bovenstaande commando worden alle takken gecontroleerd, maar alleen de master tak wordt geïnitialiseerd. Als u de andere branches wilt afrekenen, doet u het volgende:

git checkout -t origin/future_branch (for example)

Met deze opdracht wordt de externe vertakking uitgevinkt en de naam van uw lokale filiaal is hetzelfde als de externe vertakking.

Als u uw lokale filiaalnaam wilt overschrijven bij het afrekenen:

git checkout -t -b enhancement origin/future_branch

Nu is de naam van uw lokale filiaal enhancement, maar de naam van je externe filiaal is future_branch.

Documentatie


45
2018-01-21 10:04



OK, het antwoord is eenvoudig ... Je ziet in feite de branch, maar je hebt nog geen lokale kopie ...

Je moet fetch de tak...

U kunt eenvoudigweg ophalen en vervolgens afrekenen naar het filiaal, gebruik hiervoor de opdracht met één regel om dat te doen:

git fetch && git checkout test

Ik heb ook de onderstaande afbeelding gemaakt om de verschillen te delen, kijk hoe fetch werkt en ook hoe het anders is pull:

git fetch


41
2017-09-05 14:20



Je kan het proberen

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

of

git fetch
git checkout -b local_branch_name origin/branch_name

27
2018-03-24 13:11