Jemand drückte auf einen Zweig namens test
mit git push origin test
auf einem gemeinsamen Repository. Ich kann den Zweig mit sehen git branch -r
.
Jetzt versuche ich, den Remote- test
Zweig zu überprüfen .
Ich habe es versucht:
git checkout test
was nichts tutgit checkout origin/test
gibt* (no branch)
. Welches ist verwirrend. Wie kann ich auf "no branch" sein?
Wie checke ich einen Remote-Git-Zweig aus?
git
git-checkout
remote-branch
Juri Glass
quelle
quelle
upstream
, nicht nurorigin
, und jede empfohlene Antwort ist nicht im entferntesten hilfreich (Wortspiel beabsichtigt). BEARBEITEN - entschuldigen Sie, die Vielzahl der Vorschläge in den Top-2-Antworten war nutzlos. 3. one (git branch test origin/test
) funktioniert.Antworten:
Aktualisieren
Jakubs Antwort verbessert dies tatsächlich. Mit Git-Versionen ≥ 1.6.6 und nur einer Fernbedienung können Sie Folgendes tun:
Wie Benutzer masukomi in einem Kommentar betont,
git checkout test
funktioniert es in modernem Git NICHT, wenn Sie mehrere Fernbedienungen haben. In diesem Fall verwendenoder die Kurzschrift
Alte Antwort
Bevor Sie lokal an einem Remote-Zweig arbeiten können, müssen Sie ihn wie in den Antworten unten angegeben abrufen.
Um einen Zweig abzurufen, müssen Sie lediglich:
Dadurch werden alle Remote-Zweige für Sie abgerufen. Sie können die zum Auschecken verfügbaren Filialen sehen mit:
Mit den vorhandenen Remote-Filialen müssen Sie nun die Filiale überprüfen, an der Sie interessiert sind, und eine lokale Arbeitskopie erhalten:
quelle
git fetch
vorher tun, damit git davon Kenntnis hatorigin/test
git fetch origin test
origin/test
was nicht als Commit aufgelöst werden kann?"git checkout test
funktioniert NICHT in modernen Git, wenn Sie mehrere Fernbedienungen haben, die den gleichen Zweignamen haben . Es kann nicht wissen, welches zu verwenden ist.Nebenbemerkung: Mit modernem Git (> = 1.6.6 ) können Sie nur verwenden
(Beachten Sie, dass es 'Test' ist, nicht 'Ursprung / Test'), um eine magische DWIM-Serie durchzuführen und einen lokalen Zweig 'Test' für Sie zu erstellen, für den der Upstream-Tracking-Zweig 'Ursprung / Test' vorverfolgt werden würde.
Die
* (no branch)
ingit branch
Ausgabemitteln , dass Sie auf ungenannten Zweig, in so genannten „abgelöst HEAD“ Zustand (HEAD Punkte direkt zu begehen, und ist nicht symbolisch Bezug auf einigen lokalen Zweigen). Wenn Sie für diesen unbenannten Zweig einige Commits vorgenommen haben, können Sie immer einen lokalen Zweig außerhalb des aktuellen Commits erstellen:** BEARBEITEN (vom Herausgeber nicht vom Autor) **
Ich habe unten einen Kommentar gefunden, der diese Antwort zu modernisieren scheint:
Betonung
git checkout origin/test
quelle
error: pathspec 'branch_name' did not match any file(s) known to git.
, solltest du zuerst einen Git-Fetch machen.In diesem Fall möchten Sie wahrscheinlich einen lokalen
test
Zweig erstellen, der den Remote-test
Zweig verfolgt:In früheren Versionen von
git
brauchten Sie eine explizite--track
Option, aber dies ist jetzt die Standardeinstellung, wenn Sie von einer Remote-Verzweigung abzweigen.quelle
Akzeptierte Antwort funktioniert bei Ihnen nicht?
Während die erste und ausgewählte Antwort technisch korrekt ist , besteht die Möglichkeit, dass Sie noch nicht alle Objekte und Referenzen aus dem Remote-Repository abgerufen haben. In diesem Fall wird folgende Fehlermeldung angezeigt:
Lösung
Wenn Sie diese Meldung erhalten, müssen Sie zunächst ein tun ,
git fetch origin
woorigin
ist der Name des Remote - Repository vor der Ausführunggit checkout remote_branch
. Hier ist ein vollständiges Beispiel mit Antworten:Wie Sie sehen können, wurden beim Ausführen
git fetch origin
alle Remote-Zweige abgerufen , die wir noch nicht für die Verfolgung auf unserem lokalen Computer eingerichtet hatten. Von dort aus können wir, da wir jetzt einen Verweis auf den Remote-Zweig haben, einfach ausgeführt werdengit checkout remote_branch
und die Vorteile der Remote-Verfolgung nutzen.quelle
git checkout -b newbranch
Funktioniert auch hervorragend zum einstufigen Erstellen und Auschecken eines neuen Zweigs basierend auf dem aktuellen Zweig.git ls-remote
und die einzige Möglichkeit, einen tatsächlich zu verwenden, istgit checkout -b [branch] --track [remote/branch]
... und das ist nach dergit pull [remote] [branch]
Arbeit. Das heißt, es hat tatsächlich den gesamten Zweig gezogen, würde es aber immer noch nicht auflisten.git fetch other_remote only_branch
, erhalten Sie immer noch denfatal
Fehler. Sie müssengit fetch other_remote
ohne den Filialnamen. Seltsames Design.Ich habe die obige Lösung ausprobiert, aber sie hat nicht funktioniert. Versuchen Sie dies, es funktioniert:
Dadurch wird der Remote-Zweig abgerufen und ein neuer lokaler Zweig (falls noch nicht vorhanden) mit Namen erstellt
local_branch_name
und der Remote- Zweig darin verfolgt.quelle
Dadurch wird DWIM für eine nicht benannte Fernbedienung erstellt ( Dokumentation ):
Um eine neue Fernbedienung hinzuzufügen, müssen Sie zunächst Folgendes tun:
Der erste teilt Git mit, dass die Fernbedienung vorhanden ist, der zweite erhält die Commits.
quelle
Verwenden:
Andere Antworten funktionieren in meinem gutartigen Fall nicht mit modernem Git. Möglicherweise müssen Sie zuerst ziehen, wenn der Remote-Zweig neu ist, aber ich habe diesen Fall nicht überprüft.
quelle
OK , die Antwort ist einfach ... Sie sehen im Grunde den Zweig, aber Sie haben noch keine lokale Kopie! ...
Sie müssen zur
fetch
Niederlassung ...Sie können einfach abrufen und dann zum Zweig auschecken. Verwenden Sie dazu den folgenden Befehl in einer Zeile:
Ich habe auch das folgende Bild erstellt, damit Sie die Unterschiede teilen, sehen können, wie es
fetch
funktioniert und wie es sich unterscheidet vonpull
:quelle
test
wie ich die Frage sehe, sieht aus wie ein neuer Zweig, daher ist es unwahrscheinlich, dass er lokal vorhanden ist. Andernfalls könnten Sie es mit einem einzigengit pull
Befehl einfacher ziehen .fetch
ohnepull
Erlaubnis Änderungen in der geholten Kopie , aber nicht in der lokalen Niederlassung, zur Filiale führt seine nicht up-to-date?Gehen Sie folgendermaßen vor, um ein Git-Repository zu klonen:
Der obige Befehl überprüft alle Zweige, aber nur der
master
Zweig wird initialisiert. Wenn Sie die anderen Zweige auschecken möchten, gehen Sie wie folgt vor:Dieser Befehl checkt den Remote-Zweig aus, und Ihr lokaler Zweigname entspricht dem des Remote-Zweigs.
Wenn Sie Ihren lokalen Filialnamen beim Auschecken überschreiben möchten:
Jetzt lautet Ihr lokaler Zweigstellenname
enhancement
, Ihr Remote-Zweigstellenname jedochfuture_branch
.Dokumentation
quelle
master
, funktioniert dies nicht.Du kannst es versuchen
oder
quelle
--track
wird in neueren Versionen von git nicht mehr benötigt, da es standardmäßig festgelegt ist, wie in dieser früheren Antwort erläutert .Zunächst müssen Sie Folgendes tun:
git fetch
# Wenn Sie den Filialnamen nicht kennenZweitens können Sie den Remote-Zweig in Ihrem lokalen Zweig auschecken, indem Sie:
-b
erstellt einen neuen Zweig im angegebenen Namen aus dem ausgewählten Remote-Zweig.quelle
Ich benutze den folgenden Befehl:
quelle
Befehle
sind gleich
und dann
Beide erstellen ein
latest fixes_for_dev
vondevelopment
quelle
Wenn sich der Zweig auf etwas anderem als der
origin
Fernbedienung befindet, möchte ich Folgendes tun:Dadurch wird der
next
Zweig auf derupstream
Fernbedienung in einen lokalen Zweig namens eingechecktsecond/next
. Das heißt, wenn Sie bereits einen lokalen Zweig mit dem Namen next haben, kommt es nicht zu Konflikten.quelle
git fetch && git checkout your-branch-name
quelle
Keine dieser Antworten hat bei mir funktioniert. das hat funktioniert:
git checkout -b feature/branch remotes/origin/feature/branch
quelle
git
beim Aufrufen desgit branch -a
Befehls gesehen habe, aber ich war mir nicht sicher, also habe ich nur verwendetgit checkout -b apps/FEATURE/branch origin/apps/FEATURE/branch
und es schien zu funktionieren. Nachricht:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
Ich befand mich in einer Situation, in der ich
error: pathspec 'desired-branch' did not match any file(s) known to git.
alle oben genannten Vorschläge sah. Ich bin auf Git-Version 1.8.3.1.Das hat also bei mir funktioniert :
Die Erklärung dahinter ist, dass ich bemerkt habe, dass der Remote-Zweig beim Abrufen nach FETCH_HEAD abgerufen wurde:
quelle
Führen Sie einfach
git checkout
den Namen des Remote-Zweigs aus. Git erstellt automatisch einen lokalen Zweig, der den entfernten Zweig verfolgt:Wenn dieser Zweigname jedoch in mehr als einer Fernbedienung gefunden wird, funktioniert dies nicht, da Git nicht weiß, welche zu verwenden ist. In diesem Fall können Sie entweder:
oder
In 2.19 lernte Git die
checkout.defaultRemote
Konfiguration, in der eine Fernbedienung angegeben ist, auf die standardmäßig zurückgegriffen werden soll, wenn eine solche Mehrdeutigkeit behoben wird.quelle
git branch -r
sagt, der Objektname sei ungültig, da dieser Zweigname nicht in der lokalen Zweigliste von Git enthalten ist. Aktualisieren Sie Ihre lokale Zweigstellenliste vom Ursprung mit:Versuchen Sie dann erneut, Ihren Remote-Zweig zu überprüfen.
Das hat bei mir funktioniert.
Ich glaube,
git fetch
zieht alle entfernten Zweige ein, was das Originalplakat nicht wollte.quelle
git remote update
wird auch alle entfernten Zweige abrufen .Der
git remote show <origin name>
Befehl listet alle Zweige auf (einschließlich nicht verfolgter Zweige). Dann können Sie den Namen des Remote-Zweigs finden, den Sie abrufen müssen.Beispiel:
Führen Sie die folgenden Schritte aus, um entfernte Zweige abzurufen:
Beispiel:
quelle
$ git clone -b release --single-branch --depth 5 https://github.com/user/repo.git
Keine Informationen. Hier werden$ git remote show origin
nicht alle Remote-Zweige mit geklonten Einzelzweig- Repositorys aufgelistet.Von der Fernbedienung holen und den Zweig auschecken.
Z.B:
quelle
Andere Jungs und Mädels geben die Lösungen, aber vielleicht kann ich dir sagen warum.
Does nothing
ist nicht gleichdoesn't work
, also denke ich, wenn Sie 'git checkout test' in Ihr Terminal eingeben und die Eingabetaste drücken, wird keine Meldung angezeigt und es tritt kein Fehler auf. Habe ich recht?Wenn die Antwort "Ja" lautet, kann ich Ihnen die Ursache mitteilen.
Die Ursache ist, dass sich in Ihrem Arbeitsbaum eine Datei (oder ein Ordner) mit dem Namen "test" befindet.
Wenn
git checkout xxx
analysiert,xxx
als Zweigstellenname aus, aber es gibt keinen Zweig mit dem Namen test.xxx
ein Pfad, und zum Glück (oder leider) gibt es eine Datei mit dem Namen test. Diesgit checkout xxx
bedeutet, dass alle Änderungen in derxxx
Datei verworfen werden .xxx
, versucht Git, die Dateixxx
nach bestimmten Regeln zu erstellen . Eine der Regeln ist das Erstellen eines Zweigs mit dem Namen,xxx
fallsremotes/origin/xxx
vorhanden.quelle
Um neu erstellte Zweige zu erhalten
In einen anderen Zweig wechseln
quelle
Sie können alle Remote-Zweige mit dem folgenden Bash-Skript verfolgen:
Hier ist auch eine einzeilige Version:
quelle
git checkout -b "Filialname" [B bedeutet "Lokale Filiale erstellen"]
Git Branch - alle
git checkout -b "Ihr Filialname"
Git Zweig
erfolgreiches Auschecken vom Hauptzweig zum Entwicklungszweig
quelle
Verwenden Sie Folgendes, um alle Remote-Zweige zu erhalten:
dann zur Kasse gehen:
quelle
Verwenden Sie
fetch
diese Option , um Ihre gesamte Fernbedienung zu ziehenSo listen Sie entfernte Zweige auf:
Für alle Ihre Filialen auflisten
Zum Auschecken / Ändern eines Zweigs
quelle
git branch -l
und es wurde kein entfernter Zweig angezeigt.git pull --all
odergit fetch --all
git branch -l
immer noch nur lokale Niederlassungen angezeigt. Es scheint genau so zu funktionieren wiegit branch
ohne-l
. Wozu also-l
?master
ist kein Remote-Zweig.-l
Flag für Liste. Sie können verwenden--list
zuFür uns scheint die
remote.origin.fetch
Konfiguration ein Problem zu sein. Daher konnten wir keine anderen entfernten Zweige als sehenmaster
,git fetch [--all]
was nicht half. Wedergit checkout mybranch
nochgit checkout -b mybranch --track origin/mybranch
funktionierte, obwohl es sicherlich fern war.Die vorherige Konfiguration darf
master
nur abgerufen werden:Beheben Sie das Problem, indem Sie
*
die neuen Informationen verwenden und vom Ursprung abrufen:Jetzt konnten wir
git checkout
den Remote-Zweig lokal.Keine Ahnung, wie diese Konfiguration in unserem lokalen Repo gelandet ist.
quelle
Wenn der Name des Remote-Zweigs mit Sonderzeichen beginnt, müssen Sie im Befehl checkout einfache Anführungszeichen verwenden, da git sonst nicht weiß, um welchen Zweig es sich handelt.
Ich habe beispielsweise versucht, einen Remote-Zweig mit dem Namen als
#9773
auszuchecken, aber der Befehl hat nicht ordnungsgemäß funktioniert, wie in der folgenden Abbildung dargestellt:Aus irgendeinem Grund habe ich mich gefragt, ob das scharfe Symbol (#) etwas damit zu tun haben könnte, und dann habe ich versucht, den
'#9773'
Zweignamen mit einfachen Anführungszeichen zu umgeben, wie rathen als nur#9773
, und zum Glück hat es gut funktioniert.quelle
#
Zeichen für Kommentare verwendet, sodass alles nach dem#
ignoriert wird. Dies ist eine Shell-Sache und nichts Besonderes für Git. Es#
sollte ausreichen, Anführungszeichen eines Backslashs vor dem zu verwenden.Bitte folgen Sie dem Befehl, um einen leeren Ordner zu erstellen. Geben Sie das ein und verwenden Sie diesen Befehl:
quelle