border=0

"81.19.188.229 - 81.19.188.229"

Hoe een remote git branch te controleren?

Iemand klikte op een tak met de naam test met git push origin test in een gemeenschappelijke repository. Ik zie een tak met git branch -r .

Nu probeer ik de remote test branch te test .

Ik heb geprobeerd:

  • git checkout test die niets doet

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

Hoe een remote git branch te controleren?

5758
23 нояб. vastgesteld door Juri Glass op 23 november 2009-11-23 17:23 '09 om 17:23 2009-11-23 17:23
@ 26 antwoorden

-update

Het antwoord van Yakub verbetert dat eigenlijk. Met Git-versies ≥ 1,6.6 met één afstandsbediening, kunt u eenvoudig:

 git fetch git checkout test 

Zoals de masukomi-gebruiker opmerkt in de opmerkingen, zal de git checkout test NIET werken in moderne git als je meerdere consoles hebt. Gebruik in dit geval

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

of steno

 git checkout -t <name of remote>/test 

Oud antwoord

Voordat u lokaal kunt werken met een filiaal op afstand, moet u het krijgen, zoals aangegeven in de onderstaande antwoorden.

Om een ​​filiaal te krijgen, moet je gewoon:

 git fetch origin 

Dit brengt je alle remote branches. U kunt de branches zien die u kunt bestellen met:

 git branch -v -a 

Nu u externe filialen heeft, moet u het filiaal waarin u bent geïnteresseerd controleren door u een lokaal werkkopie te sturen:

 git checkout -b test origin/test 
7947
23 нояб. Het antwoord wordt gegeven hallski 23 nov. 2009-11-23 17:26 '09 om 17:26 uur 2009-11-23 17:26

Sidenote: Met moderne Git (> = 1.6.6 ) die je alleen kunt gebruiken

 git checkout test 

(merk op dat dit 'test' niet 'oorsprong / test' is) om de magische DWIM -mery uit te voeren en voor u een lokale 'test' voor de branch te creëren, waarbij de upstream de "oorsprong / test" van de remote tracking-tak zou zijn.


De output * (no branch) in git branch betekent dat je in een niet nader genoemde branch bent in de zogenaamde "disconnected HEAD" staat (HEAD verwijst rechtstreeks naar een commit en is geen symbolische link naar een lokale branch). Als je een aantal commits hebt gemaakt in deze naamloze branch, kun je altijd een lokale branch maken met de huidige commit:

 git checkout -b test HEAD 
1147
24 нояб. Antwoord gegeven door Jakub Narębski 24 november 2009-11-24 03:17 '09 om 3:17 uur 2009-11-24 03:17

In dit geval wilt u waarschijnlijk een lokale testtak maken die de remote test branch volgt:

 $ git branch test origin/test 

In eerdere versies van git je een expliciete --track optie nodig, maar dit is nu de standaard wanneer je een remote branch aftakt.

508
23 нояб. het antwoord wordt gegeven op 23 nov. 2009-11-23 17:27 '09 om 17:27 2009-11-23 17:27

Het geaccepteerde antwoord werkt niet voor u?

Hoewel het eerste en het geselecteerde antwoord technisch correct is, is het mogelijk dat u nog niet alle objecten en links van de externe repository hebt ontvangen. Als dat het geval is, krijgt u de volgende foutmelding:

 $ git checkout -b remote_branch origin/remote_branch 

fataal: git checkout: updatepaden zijn niet compatibel met schakelen tussen filialen.
Bent u van plan om "origin / remote_branch" te controleren, wat niet als commit kan worden opgelost?

beslissing

Als je dit bericht ontvangt, moet je eerst git fetch origin , waarbij origin de naam is van de externe repository voordat git checkout remote_branch . Hier is een volledig voorbeeld met de 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, hebben we, als we git fetch origin uitgepakte remote branches uitvoeren, nog geen tracking geconfigureerd op onze lokale computer. Vanaf daar, omdat we nu een koppeling hebben naar een externe vestiging, kunnen we gewoon git checkout remote_branch en krijgen we de voordelen van tracking op afstand.

421
07 дек. Antwoord gegeven door Corey Ballou 07 dec 2012-12-07 23:52 '12 om 23:52 uur 2012-12-07 23:52

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

 git fetch origin 'remote_branch':'local_branch_name' 

Dit zal leiden naar de remote branch en een nieuwe lokale branch creëren (als deze nog niet bestaat) met de naam local_branch_name en track verwijderd.

208
18 окт. antwoord gegeven door Sahil kalra 18 oct. 2013-10-18 08:55 '13 om 8:55 2013-10-18 08:55

Dit is de DWIM voor de naam zonder naam ( documentatie ):

 $ git checkout -t remote_name/remote_branch 

Om een ​​nieuwe afstandsbediening toe te voegen, moet u het volgende doen:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

De eerste vertelt Git toegang op afstand, de tweede krijgt commits.

104
28 апр. antwoordde tacaswell 28 april 2012-04-28 01:37 '12 om 1:37 2012-04-28 01: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 migreren als de externe vertakking nieuw is, maar ik heb deze kwestie niet gecontroleerd.

98
21 февр. Het antwoord is gegeven door matanster 21 feb. 2016-02-21 13:58 '16 om 13:58 uur 2016-02-21 13:58

Nou , het antwoord is simpel ... Je ziet eigenlijk een filiaal, maar je hebt nog geen lokale kopie! ...

U moet fetch filiaal fetch ...

U kunt eenvoudig een bestelling in een filiaal ontvangen en vervolgens plaatsen met behulp van de opdracht één regel hieronder om dit te doen:

 git fetch  git checkout test 

Ik heb ook de onderstaande afbeelding gemaakt, zodat je je verschillen kunt delen, kunt zien hoe fetch werkt en hoe je pull kunt pull :

2019

05 сент. Het antwoord is gegeven Alireza 05 sep. 2017-09-05 17:20 17 om 17.20 uur 2017-09-05 17:20 uur

Om de Git-repository te klonen, voer je uit:

 git clone <either ssh url /http url> 

Het bovenstaande commando controleert alle branches, maar alleen de master branch wordt geïnitialiseerd. Volg deze stappen als u andere branches wilt controleren:

 git checkout -t origin/future_branch (for example) 

Met deze opdracht wordt de externe vertakking gecontroleerd en is de naam van uw lokale filiaal dezelfde als die van de externe vertakking.

Als u de naam van het lokale filiaal bij de hand wilt hebben:

 git checkout -t -b enhancement origin/future_branch 

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

documentatie

48
21 янв. het antwoord is gegeven door Madhan Ayyasamy 21 januari 2013-01-21 13:04 '13 om 13:04 2013-01-21 13:04

Je kunt 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 
31
24 марта '14 в 16:11 2014-03-24 16:11 het antwoord wordt gegeven op 24 maart, '14 om 16:11, 2014-03-24 16:11

Eerst moet je doen:

git fetch # Als je de naam van de branch niet kent

 git fetch origin branch_name 

Ten tweede kunt u het externe filiaal controleren op uw lokale:

 git checkout -b branch_name origin/branch_name 

-b maakt een nieuwe branch in de gespecificeerde naam van de geselecteerde remote branch.

27
18 мая '17 в 16:55 2017-05-18 16:55 Antwoord gegeven door Mohideen ibn Mohammed op 18 mei '17 om 16:55 2017-05-18 16:55

commando's

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

zijn gelijk

  git fetch --all 

en dan

  git checkout -b fixes_for_dev origin/development 

Beide maken de latest fixes_for_dev van de development

25
21 апр. antwoord gegeven sreekumar 21 apr 2016-04-21 22:10 16 om 10:10 uur 2016-04-21 22:10

Ik gebruik het volgende commando:

 git checkout --track origin/other_remote_branch 
23
06 сент. het antwoord wordt gegeven priyankvex 06 sep . 2017-09-06 17:41 17 om 17:41 uur 2017-09-06 17:41

Als de branch zich op iets anders dan remote origin , doe ik het graag het volgende:

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

Hiermee wordt de next branch op de externe upstream server in de lokale branch met de naam second/next gecontroleerd. Dit betekent dat als u al een volgende vestiging heeft, deze niet conflicteert.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 Het antwoord wordt gegeven door Kris op 01 maart '13 om 13:00 uur 2013-03-01 13:00 uur

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 het antwoord wordt gegeven aan Inder Kumar Rathore op 26 maart '14 om 10:00 2014-03-26 10:00

git branch -r zegt dat de naam van het object ongeldig is omdat de naam van deze branch niet in de lijst van lokale Git-branches staat. Werk uw lokale lijst met vestigingen van de bron bij met:

 git remote update 

En probeer het opnieuw om de remote branch te controleren.

Het werkte voor mij.

Ik geloof dat git fetch trekt in alle remote branches, die de originele poster niet wil.

15
06 июня '13 в 15:21 2013-06-06 15:21 het antwoord wordt gegeven door webdevguy 06 juni '13 om 15:21 2013-06-06 15:21

geen van deze antwoorden werkte voor mij. het werkte:

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

14
10 июля '18 в 5:11 2018-07-10 05:11 Antwoord wordt gegeven door brianyang op 10 juli '18 om 05:11 uur 2018-07-10 05:11

De opdracht git remote show <origin name> toont een lijst met alle branches (inclusief niet-tracked branches). Vervolgens kunt u de naam vinden van de externe branch die u wilt extraheren.

bijvoorbeeld:

 $ git remote show origin 

Gebruik deze stappen om takken op afstand op te halen:

 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) 

bijvoorbeeld:

 $ git fetch origin test:test $ git checkout test 
11
07 янв. Het antwoord wordt gegeven door Thushan 07 januari 2018-01-07 16:12 '18 om 16:12 uur 2018-01-07 16:12

Andere jongens en meisjes geven oplossingen, maar misschien kan ik je vertellen waarom.

git check test die niets doet

Does nothing is niet hetzelfde doesn't work , dus ik denk dat als je 'git checkout-test' in je terminal invoert en op de enter-toets drukt, het bericht niet verschijnt en er geen fout optreedt. Heb ik gelijk?

Als het antwoord ja is, kan ik u de reden daarvoor vertellen.

De reden is dat er een bestand (of map) met de naam 'test' in uw stamboom staat.

Wanneer git checkout xxx uitgevonden

  • git kijkt eerst naar xxx als de naam van een branch, maar er is geen test met de naam branch.
  • Dan denkt Git dat xxx de manier is, en gelukkig (of helaas) is er een bestand met de naam test. Daarom betekent git checkout xxx om elke wijziging in het xxx bestand te annuleren.
  • Als er geen bestand met de naam xxx , probeert Git xxx aan te maken volgens sommige regels. Een regel is om een ​​filiaal met de naam xxx , als remotes/origin/xxx bestaat.
8
10 июля '17 в 10:45 2017-07-10 10:45 het antwoord wordt gegeven door oldman 10 juli '17 om 10:45 2017-07-10 10:45

Ik zat vast in een situatie waarin de error: pathspec 'desired-branch' did not match any file(s) known to git. voor alle bovenstaande aanbiedingen. Ik ben op git versie 1.8.3.1.

Dus het werkte voor mij :

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

De verklaring hiervoor is dat ik heb gemerkt dat bij het ophalen van een externe vertakking deze is geselecteerd in FETCH_HEAD:

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

Voer git checkout met de naam van de remote branch. Git maakt automatisch een lokale branch die de afstandsbediening bijhoudt:

 git fetch git checkout test 

Als deze filenaam echter in meer dan één console wordt gevonden, zal deze niet werken, omdat Git niet weet wat te gebruiken. In dit geval kunt u een van de volgende gebruiken:

 git checkout --track origin/test 

of

 git checkout -b test origin/test 

In 2.19 onderzocht Git de configuratie van checkout.defaultRemote , waarin, bij het verwijderen van een dergelijke dubbelzinnigheid, de standaard afstandsbedieningswaarde wordt aangegeven.

6
13 сент. het antwoord wordt gegeven door Eugene Yarmash op 13 september . 2018-09-13 15:21 '18 om 15:21 uur 2018-09-13 15:21 uur

Om nieuw gecreëerde takken te krijgen

 git fetch 

Schakel over naar een andere tak

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 het antwoord wordt gegeven door Hasib Kamal op 15 maart '18 om 11:49 2018-03-15 11:49

U kunt beginnen met het volgen van alle verwijderde takken met het volgende bash-script:

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

Hier is ook een versie met één regel:

 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 авг. Het antwoord werd gegeven door OzzyCzech op 11 augustus. 2017-08-11 15:06 17 om 15:06 2017-08-11 15:06

Volg deze opdracht om een ​​lege map te maken. Voer het in en gebruik de volgende opdracht:

 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 янв. het antwoord wordt gegeven door Mehedi Hasan Jan 01 2016-01-01 13:31 '16 om 13:31 2016-01-01 13:31

Haal de oorsprong en controleer de tak.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 het antwoord is gegeven Pranav 21 mei '18 om 14:33 2018-05-21 14:33

Als de naam van de remote branch begint met speciale tekens, moet u enkele aanhalingstekens gebruiken in de uitcheckopdracht, anders weet git niet over welke branch u het hebt.

Ik probeerde bijvoorbeeld een externe vertakking genaamd #9773 maar de opdracht werkte niet correct, zoals weergegeven in de onderstaande afbeelding:

2019

07 нояб. het antwoord is gegeven Ulysses Alves 07 nov. 2018-11-07 14:17 '18 om 14:17 uur 2018-11-07 14:17

Zie andere vragen over tags of Stel een vraag