Wie klone ich alle Remote-Zweige?

Lesezeit: 7 Minuten

Benutzer-Avatar
Peter Colton

Mein master und development Filialen werden aus der Ferne verfolgt GitHub. Wie kann ich diese beiden Zweige klonen?

  • Die akzeptierte Antwort hier (git branch -a) zeigt Ihnen die Branches in der Fernbedienung, aber wenn Sie versuchen, einen davon auszuchecken, befinden Sie sich in einem „getrennten HEAD“-Zustand. Die nächste Antwort nach unten (zweithäufigste positive Stimmen) beantwortet eine andere Frage (nämlich: wie man alle Zweige zieht, und dies funktioniert wiederum nur für diejenigen, die Sie lokal verfolgen). Einige der Kommentare weisen darauf hin, dass Sie die analysieren könnten git branch -a Ergebnisse mit einem Shell-Skript, das alle entfernten Zweige lokal verfolgen würde. Zusammenfassung: Es gibt keinen git-nativen Weg, um das zu tun, was Sie wollen, und es ist vielleicht sowieso keine so gute Idee.

    – Tag Davis Waterbury

    18. Juni 2012 um 22:43 Uhr

  • Vielleicht einfach den gesamten Ordner auf altmodische Weise kopieren? scp [email protected]:/home/some_user/project_folder ~ Ich bin mir jedoch nicht sicher, ob diese Lösung für GitHub funktioniert.

    – snapfractalpop

    26. September 2012 um 22:51 Uhr

  • Anstatt zu sagen “Ich habe geklont, gezogen und geholt”, ist es viel besser, uns das zu zeigen genaue Befehle die du hingerichtet hast.

    – Bob Gilmore

    22. November 2013 um 18:17 Uhr

  • Es ist mir immer ein Rätsel, warum “klonen” nicht im Sinne einer exakten Kopie ist. Wenn es sich um einen exakten Klon handelt, sollten dann nicht alle Branches Teil des lokalen Repositorys sein? Ich meine, ist das nicht einer der Punkte der Verteilung? Wenn also ein Repository weg ist, haben Sie immer noch eine vollständige Kopie von allem. Oder sind die sogenannten “Remote” wirklich schon Teil des lokalen Repositorys?

    – Hummel

    11. Juli 2016 um 6:31 Uhr


  • Angesichts all der Upvotes, Antworten, Kommentare zu Antworten und der verblüffenden Anzahl von Aufrufen denke ich, dass es an der Zeit ist, dass git einen Befehl dafür hinzufügt. Und recht hast du @huggie, genau meine Gedanken.

    – Sнаđошƒаӽ

    29. August 2016 um 4:29 Uhr

Benutzer-Avatar
Gabe Kopley

Wenn Sie viele entfernte Branches haben, die Sie auf einmal abrufen möchten, tun Sie Folgendes:

git pull --all

Jetzt können Sie jeden Zweig nach Bedarf auschecken, ohne das Remote-Repository zu treffen.


Notiz: Dadurch werden keine Arbeitskopien von nicht ausgecheckten Zweigen erstellt, was die Frage war. Siehe dazu

  • Bigfishs Antwort
  • Daves Antwort

  • Wenn ich git clone mache, habe ich den Master-Branch lokal und 10 Branches “remote”. Also DIESE Antwort von Gabe war sehr hilfreich und beantwortet die Frage.

    – basZero

    27. Januar 2012 um 19:07 Uhr

  • Dadurch werden nur entfernte Zweige abgerufen, die lokal hinzugefügt wurden, nicht irgendein entfernte Filiale

    – jujule

    10. Februar 2012 um 11:45 Uhr

  • Der erste Befehl ist redundant. Einfach git pull --all wird dasselbe tun – es wird nur nicht zweimal abgerufen. Und infosec812 hat Recht, dass dies die Frage ohnehin nicht beantwortet. Ich frage mich, wie das so viele Upvotes bekommen hat.

    – Sven Marnach

    6. April 2012 um 14:03 Uhr


  • Dies ist überhaupt nicht hilfreich, zieht keine anderen Remote-Zweige als die vorhandenen.

    – Avinash R

    11. April 2013 um 15:02 Uhr

  • Es ist nicht das erste Mal, dass eine Antwort so einfach ist falsch Weil es die Frage nicht beantwortet, werden Hunderte von Upvotes von Leuten erhalten, die entweder Fragen nicht verstanden und / oder beantwortet haben oder von Google gelandet sind, um nach etwas anderem als dem ursprünglichen OP-Problem zu suchen, und eine solche “Antwort” hat versehentlich ihr Problem beantwortet. Leider gibt es kein gültiges Flag für Antworten, die die Frage nicht beantworten. Der einzige Weg ist das Downvoting, was in einigen Fällen offensichtlich nicht funktioniert, also wird solch ein Lärm für immer bleiben 🙁

    – 9ilsdx 9rvj 0lo

    10. April 2018 um 14:43 Uhr

  • Dies ist wirklich nah an einer perfekten Lösung. Das einzige, was es noch besser machen würde, wäre, wenn diese Funktionalität als Option in Git integriert wäre.

    – Deven Phillips

    27. Oktober 2011 um 17:15 Uhr

  • “Einzeiler”: git branch -a | grep -v HEAD | perl -ne 'chomp($_); s|^\*?\s*||; if (m|(.+)/(.+)| && not $d{$2}) {print qq(git branch --track $2 $1/$2\n)} else {$d{$_}=1}' | csh -xfs Wie gewohnt: Vor dem Kopieren in Ihrem Setup testen rm -rf universe as we know it

    – cfi

    18. September 2012 um 12:38 Uhr


  • Dieser Befehl erstellt die Feature-Zweige aus der Ferne als normale Branches (keine Feature-Zweige) – wie kann man das beheben?

    – Alex2php

    20. März 2014 um 14:31 Uhr

  • Wenn Sie auf Probleme mit “/” in Zweignamen stoßen, finden Sie unten eine Lösung mit einem Git-Alias. siehe Antwort von “niemand” auf “beantwortet am 15. Mai ’13 um 11:02 Uhr”

    – Wemu

    12. Januar 2015 um 11:54 Uhr

  • Ich trimme gerade remotes/origin/ Namespaces erhalten: for BRANCH in $(git branch -a | grep remotes | grep -v HEAD | grep -v master); do git branch --track "${BRANCH#remotes/origin/}" "${BRANCH}"; done

    – kgadek

    2. Juli 2015 um 8:33 Uhr


Benutzer-Avatar
David

Verwendung der --mirror Option scheint die zu kopieren remote Verzweigungen richtig verfolgen. Es richtet das Repository jedoch als Bare-Repository ein, sodass Sie es anschließend wieder in ein normales Repository umwandeln müssen.

git clone --mirror path/to/original path/to/dest/.git
cd path/to/dest
git config --bool core.bare false
git checkout anybranch

Bezug: Git-FAQ: Wie klone ich ein Repository mit allen remote verfolgten Branches?

  • Sie wissen, dass dies eigentlich eine ziemlich gute Antwort zu sein scheint, obwohl es keine Stimmen gibt. Gibt es irgendwelche Fallstricke, wenn man es so macht? Ich musste einen Zweig explizit auschecken, nachdem ich diese Befehle ausgeführt hatte.

    – Schleife

    12. Januar 2012 um 4:25 Uhr

  • Dies in Kombination mit git push –mirror ist genau das, was ich brauchte, um ein exaktes Duplikat eines Remote-Git-Repos zu erstellen, wenn ich von github.com zu einer Github-Enterprise-Installation wechselte. Vielen Dank!

    – Jakob Fike

    11. September 2012 um 22:59 Uhr

  • @Dave: Füge ein Finale hinzu git checkout als letzten Befehl, um den Kopf des aktuellen Zweigs im geklonten Repo endgültig auszuchecken. Dies ist eine großartige Antwort, bei weitem die beste. Sei mutig, irgendwann bringen wir dich an die Spitze 🙂

    – cfi

    18. September 2012 um 7:37 Uhr

  • @Dave: Hm. Ich habe Bedenken: –mirror macht mehr als nur alle Branches so einzurichten, dass sie verfolgt werden. Es kopiert alle Refs vom Ursprung und den nachfolgenden git remote update werde das wieder machen. Das Verhalten von Pulls ändert sich. Ich glaube wieder, dass die vollständige Kopie ein einzeiliges Skript erfordert.

    – cfi

    18. September 2012 um 11:53 Uhr

  • git clone --mirror eignet sich sehr gut zum Sichern Ihrer Git-Repositories ^_^

    – TrinitronX

    20. Mai 2013 um 21:19 Uhr

Benutzer-Avatar
Harry B

Sie können ganz einfach zu einem Zweig wechseln, ohne die ausgefallene Syntax “git checkout -b somebranch origin/somebranch” zu verwenden. Du kannst tun:

git checkout somebranch

Git wird automatisch das Richtige tun:

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

Git prüft, ob ein Branch mit demselben Namen in genau einem Remote-Branch existiert, und wenn ja, verfolgt es ihn genauso, als ob Sie explizit angegeben hätten, dass es sich um einen Remote-Branch handelt. Von der Git-Checkout-Manpage von Git 1.8.2.1:

Wenn nicht gefunden wird, aber ein Tracking-Zweig in genau einer Remote (nennen Sie ihn ) mit einem passenden Namen existiert, behandeln Sie ihn als äquivalent zu

$ git checkout -b <branch> --track <remote>/<branch>

  • Sie wissen, dass dies eigentlich eine ziemlich gute Antwort zu sein scheint, obwohl es keine Stimmen gibt. Gibt es irgendwelche Fallstricke, wenn man es so macht? Ich musste einen Zweig explizit auschecken, nachdem ich diese Befehle ausgeführt hatte.

    – Schleife

    12. Januar 2012 um 4:25 Uhr

  • Dies in Kombination mit git push –mirror ist genau das, was ich brauchte, um ein exaktes Duplikat eines Remote-Git-Repos zu erstellen, wenn ich von github.com zu einer Github-Enterprise-Installation wechselte. Vielen Dank!

    – Jakob Fike

    11. September 2012 um 22:59 Uhr

  • @Dave: Füge ein Finale hinzu git checkout als letzten Befehl, um den Kopf des aktuellen Zweigs im geklonten Repo endgültig auszuchecken. Dies ist eine großartige Antwort, bei weitem die beste. Sei mutig, irgendwann bringen wir dich an die Spitze 🙂

    – cfi

    18. September 2012 um 7:37 Uhr

  • @Dave: Hm. Ich habe Bedenken: –mirror macht mehr als nur alle Branches so einzurichten, dass sie verfolgt werden. Es kopiert alle Refs vom Ursprung und den nachfolgenden git remote update werde das wieder machen. Das Verhalten von Pulls ändert sich. Ich glaube wieder, dass die vollständige Kopie ein einzeiliges Skript erfordert.

    – cfi

    18. September 2012 um 11:53 Uhr

  • git clone --mirror eignet sich sehr gut zum Sichern Ihrer Git-Repositories ^_^

    – TrinitronX

    20. Mai 2013 um 21:19 Uhr

Benutzer-Avatar
Peter Mortensen

Bezüglich,

git checkout -b experimenteller Ursprung/experimentell

verwenden

git checkout -t origin/experimental

oder je ausführlicher, aber leichter zu merken

git checkout --track origin/experimental

könnte besser sein, wenn es darum geht, ein entferntes Repository zu verfolgen.

  • Sie meinen also, die zweite Form ist nur leichter zu merken und es gibt keinen weiteren Unterschied?

    – aderchox

    18. Juli 2019 um 15:09 Uhr

1331610cookie-checkWie klone ich alle Remote-Zweige?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy