Mein Kollege und ich arbeiten am selben Repository. Wir haben es in zwei Zweige verzweigt, jeder technisch für verschiedene Projekte, aber sie haben Ähnlichkeiten, deshalb möchten wir uns manchmal wieder auf das * master
von der festlegen branch
.
Ich habe jedoch die branch
. Wie kann mein Kollege diesen Zweig konkret ziehen?
Ein git clone
Mitglied des Repositorys scheint die Zweige nicht lokal für ihn zu erstellen, obwohl ich sie nach einem Druck auf mein Ende live weiter sehen kann.
Als ich den Zweig ursprünglich gemacht habe, habe ich es auch getan -b checkout
. Macht das einen großen Unterschied?
$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master
$ git fetch origin discover
$ git checkout discover
Dies sind die Befehle, die ich ausgeführt habe. Aber es funktioniert definitiv nicht.
Ich möchte in der Lage sein, diesen Zweig zu überprüfen und dann nur die Zweigänderungen von verschiedenen Mitarbeitern oder Arbeitsstationen zu verschieben und zurückzuschreiben .
quelle
git fetch --all
, Dann, um alle Zweige anzuzeigen :git branch
, Dann checke ich den Zweig aus:git checkout nameofnewbranch
git fetch origin discover:discover && git checkout discover
Antworten:
Sie müssen einen lokalen Zweig erstellen, der einen Remote-Zweig verfolgt. Mit dem folgenden Befehl wird ein lokaler Zweig mit dem Namen daves_branch erstellt , der den Ursprung des Remote-Zweigs / daves_branch verfolgt . Wenn Sie Ihre Änderungen vornehmen, wird der Remote-Zweig aktualisiert.
Für die neuesten Versionen von Git:
--track
ist eine Abkürzung fürgit checkout -b [branch] [remotename]/[branch]
"remotename] ist in diesem Fall der Ursprung und [branch] ist doppelt gleich, in diesem Fall daves_branch .Für Git 1.5.6.5 brauchten Sie Folgendes:
Für Git 1.7.2.3 und höher ist dies ausreichend (es hat möglicherweise früher begonnen, aber dies ist die früheste Bestätigung, die ich schnell finden konnte):
Beachten Sie, dass mit den neuesten Git-Versionen dieser Befehl keinen lokalen Zweig erstellt und Sie in den Status "Getrennter HEAD" versetzt. Wenn Sie eine lokale Niederlassung möchten, verwenden Sie die
--track
Option.Ausführliche Informationen finden Sie hier: 3.5 Git Branching - Remote Branches, Tracking Branches
quelle
git checkout -b --track daves_branch origin/daves_branch
Ich habe
fetch
gefolgt voncheckout
...... wo
<rbranch>
sich der Remote-Zweig oder die Quellreferenz befindet und wo<lbranch>
sich der noch nicht vorhandene lokale Zweig oder die Zielreferenz befindet, die Sie verfolgen möchten und die Sie wahrscheinlich genauso benennen möchten wie der Remote-Zweig oder die Quellreferenz. Dies wird unter Optionen in der Erläuterung von erläutert<refspec>
.Git ist so klug es automatisch den ersten Befehl , wenn ich abgeschlossen Register nach den ersten paar Buchstaben des entfernten Zweig. Das heißt, ich muss nicht einmal den lokalen Zweig benennen, Git kopiert automatisch den Namen des entfernten Zweigs für mich. Danke Git!
Wie die Antwort in diesem ähnlichen Beitrag zum Stapelüberlauf zeigt, können Sie den lokalen Zweig
fetch
auch dann erstellen, wenn Sie ihn mit dem-b
Flag auschecken , wenn Sie ihn nicht benennen . Das heißt,git fetch <remote> <branch>
gefolgt vongit checkout -b <branch> <remote>/<branch>
genau das Gleiche wie meine ursprüngliche Antwort. Und offenbar, wenn Ihr Repository hat nur eine Fernbedienung, dann kann man nur tun ,git checkout <branch>
nachfetch
und es wird eine lokale Niederlassung für Sie erstellen. Sie haben beispielsweise gerade ein Repository geklont und möchten zusätzliche Zweige von der Fernbedienung auschecken.Ich glaube, dass ein Teil der Dokumentation für
fetch
wörtlich kopiert wurdepull
. Insbesondere auf den Abschnitt<refspec>
in Optionen ist gleich. Ich glaube jedoch nicht, dass diesfetch
jemals der Fall sein wirdmerge
, sodass Siefetch
nichts tun sollten , wenn Sie die Zielseite des Doppelpunkts leer lassen .HINWEIS:
git fetch <remote> <refspec>
ist die Abkürzung fürgit fetch <remote> <refspec>:
welche wäre also nichts tun, sonderngit fetch <remote> <tag>
ist das gleiche wiegit fetch <remote> <tag>:<tag>
die die Fern kopieren soll<tag>
vor Ort.Ich denke, dies ist nur hilfreich, wenn Sie einen Remote-Zweig lokal kopieren möchten, ihn aber nicht unbedingt sofort auschecken müssen. Andernfalls würde ich jetzt die akzeptierte Antwort verwenden , die im ersten Abschnitt der Checkout-Beschreibung und später im Optionsabschnitt unter der Erläuterung von ausführlich erläutert wird
--track
, da es sich um einen Einzeiler handelt. Nun ... eine Art Einzeiler, weil man immer nochgit fetch <remote>
zuerst laufen müsste .Zu Ihrer Information: Die Reihenfolge der
<refspecs>
(Quelle: Ziel) erklärt die bizarre Methode vor Git 1.7 zum Löschen entfernter Zweige . Das heißt, schieben Sie nichts in die Zielreferenz.quelle
git fetch remote branch
habe ich überhaupt keinen Verzweigungskopf hinzugefügt, obwohl alle Refs abgerufen wurden. Als ich versuchte, den Schritten in der akzeptierten Antwort zu folgen, bekam ich den Fehlerpathspec did not match any file(s) known to git.
, aber derrbranch:lbranch
Ansatz funktionierte. Interessanterweise wurden auch alle Tags abgerufen, die mit demselben Präfix begonnen haben, als wäre es ein Platzhalter (rbranch*
).fetch
Befehl ausführen sollen . Die akzeptierte Antwort ist jedoch sinnvoll, da OP feststellt, dass er den Abruf bereits durchgeführt hat. Das ist zumindest das Problem, auf das ich gestoßen bin.Wenn Sie versuchen, einen neuen Remote-Zweig "auszuchecken" (der nur auf der Remote, aber nicht lokal vorhanden ist), benötigen Sie Folgendes:
Dies setzt voraus, dass Sie vom Ursprung abrufen möchten . Wenn nicht, ersetzen Sie den Ursprung durch Ihren Remote- Namen.
quelle
git fetch
undgit fetch remote
tun dasselbe. Wenn Sie von einer anderen Fernbedienung alsorigin
abrufen müssen, können Sie dies mit verwendengit fetch <other_remote_name>
. Diese Situation ist höchst ungewöhnlich und wurde hier der Vollständigkeit halber erwähnt.So checken Sie myBranch aus, die remote und nicht lokal vorhanden ist - das hat bei mir funktioniert:
Ich habe diese Nachricht erhalten:
quelle
-t
?-t
und bekam,You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.
weil es keinen gleichnamigen lokalen Zweig gab. Ich musste erneut laufen,-t
um das Problem zu beheben.checkout
um es zu erschaffen. Vielen Dank!--all
ist niemals eine gute Idee, da jede Datei in jedem Zweig heruntergeladen wird. Es wird mehr Zeit und Raum brauchen. Es ist besser , spezifisch mit dem Zweignamen zu sein und zu tun , wie dieseVerwenden Sie
git branch -a
(sowohl lokale als auch entfernte Zweige) odergit branch -r
(nur entfernte Zweige), um alle Fernbedienungen und ihre Zweige anzuzeigen. Sie können dann eine Verbindunggit checkout -t remotes/repo/branch
zur Fernbedienung herstellen und einen lokalen Zweig erstellen.Es gibt auch einen Befehl git-ls-remote, mit dem alle Refs und Tags für diese Fernbedienung angezeigt werden.
quelle
git checkout remotes/repo/branch
Lässt Git Checkout nach einer Pfadspezifikation suchen, nicht nach einem Remote-Repo.Der Titel und die Frage sind verwirrt:
Wenn die Frage ist, wie kann ich einen Remote-Zweig zum Arbeiten bringen oder wie kann ich einen Remote-Zweig auschecken? Eine einfachere Lösung ist:
Mit Git (> = 1.6.6) können Sie Folgendes verwenden:
Wenn local
<branch_name>
nicht gefunden wird, aber in genau einer Fernbedienung ein Tracking-Zweig mit einem übereinstimmenden Namen vorhanden ist, behandeln Sie ihn als äquivalent zu:Siehe Dokumentation zum Auschecken von Git
Für deinen Freund:
quelle
Der einfachste Weg, zumindest für mich:
quelle
fetch
Befehls ist der erforderliche Zweig auf dem lokalen Computer verfügbar.git checkout -b 'your_branch' origin/'remote branch'
ist erforderlich, um diesen Zweig auszuchecken.Verwenden:
Dies ist eine Operation, die häufig genug ist, damit Git die
--track
Kurzform bereitstellt :Tatsächlich ist dies so häufig, dass es sogar eine Verknüpfung für diese Verknüpfung gibt. Wenn der Filialname, den Sie auschecken möchten (a), nicht vorhanden ist und (b) genau mit einem Namen auf nur einer Fernbedienung übereinstimmt, erstellt Git einen Tracking-Zweig für Sie:
Um einen lokalen Zweig mit einem anderen Namen als den Remote-Zweig einzurichten, können Sie problemlos die erste Version mit einem anderen lokalen Zweignamen verwenden:
Jetzt wird Ihre lokale Niederlassung
sf
automatisch abrufenorigin/serverfix
.Quelle: Pro Git, 2. Auflage , geschrieben von Scott Chacon und Ben Straub (zur besseren Lesbarkeit geschnitten)
quelle
Mit diesem einfachen Befehl:
quelle
Der einfachste Weg, um einen Zweig abzurufen, der auf der Fernbedienung vorhanden ist, ist:
Sie können sehen, ob es auf der Fernbedienung bereits vorhanden ist mit:
Dadurch wird der Remote-Zweig zu Ihrem lokalen Zweig abgerufen und der Remote-Zweig automatisch verfolgt.
quelle
Was mir geholfen hat war
1) Anzeigen aller verfügbaren Remote-Zweige (z. B. 'Name des Remote-Zweigs')
2) Erstellen Sie einen lokalen Zweig mit dem Namen des Remote-Zweigs
quelle
git push
ohne andere Argumente ausführen ? Ist die lokale Niederlassung namensremote-branch-name
automatisch zugeordnet (Tracking) der Remote - Zweig genanntorigin/remote-branch-name
. Oder müssen Sie laufengit push -u origin remote-branch-name
Sie können den Remote-Zweig auch auf einmal abrufen und auschecken:
quelle
quelle
Ich tippte
und bekam
quelle
git checkout -b <branch_name> --track <remote>/<branch_name>
Manchmal werden Sie gebeten, nicht mit dem Hauptzweig herumzuspielen und nur den Remote-Zweig zu bearbeiten (wie ich gebeten wurde). Alles, was Sie brauchen, ist der Remote-Zweig.
Führen Sie dies aus, um den Remote-Zweig allein (ohne den Master) zu klonen
Dabei ist remote_branch_name der Name des Remote-Zweigs
Zum Beispiel,
Dadurch wird sichergestellt, dass Sie den Remote-Zweig mit dem Namen des Remote-Zweigs in Ihren lokalen Zweig klonen.
Wenn Sie nun Ihren Code festschreiben und pushen, wird der Code nur an diesen Zweig gesendet.
quelle
[Schnelle Antwort]
Es gibt viele Alternativen und meine Favoriten sind:
- Alternative 1:
- Alternative 2:
quelle
Angenommen, Ihre Fernbedienung lautet [email protected] und Sie möchten den Zweig random_branch. Der Prozess sollte wie folgt sein:
Überprüfen Sie zuerst die Liste Ihrer Fernbedienungen von
Wenn Sie die Fernbedienung [email protected] nicht in der Ausgabe des obigen Befehls haben, würden Sie sie um hinzufügen
Der lokale Zweig my_copy_random_branch verfolgt den Zweig random_branch Ihrer Fernbedienung.
quelle
git fetch --all & git checkout <branch name>
quelle
git fetch && git checkout <your friend's branch name>
sollte den Trick machenquelle
Ich möchte Ihnen einen einzeiligen Befehl zum Abrufen aller Remote-Zweige zu Ihrem lokalen Zweig geben und zu Ihrem gewünschten neu erstellten lokalen Zweig wechseln:
Nachdem Sie den obigen Befehl ausgeführt haben, erhalten Sie die folgende Meldung:
In der ersten Zeile steht, dass zu einem neuen Zweig gewechselt wurde - warum neu? Es ist schon da in der Ferne!
Aber eigentlich muss man es auch lokal erstellen. Der Zweig wird aus dem Remote-Index entnommen und lokal für Sie erstellt.
Hier
discover
ist ein neuer Zweig, der aus dem Remote-Zweig Ihres Repositorys erstellt wurdediscover
.Aber die zweite Zeile enthält mehr Informationen als die erste, die uns Folgendes sagt:
Unsere Niederlassung ist so eingerichtet, dass sie eine gleichnamige entfernte Niederlassung verfolgt .
Obwohl
git fetch
alle Zweige zu lokal holt . Wenn Sie jedoch danach laufengit branch
, wird nur einemaster
lokale Verzweigung angezeigt. Warum ?Denn für jeden Zweig, den Sie in Remote haben, müssen Sie ihn auch lokal erstellen, um ihn wie
git checkout <branchname>
im obigen Beispiel zu verfolgen .Nachdem Sie den
git checkout
Befehl ausgeführt haben, können Sie ihn ausführengit branch
, und jetzt können Sie beide Zweige sehen:quelle
Wenn Sie alle Remote-Zweige abrufen möchten, geben Sie einfach Folgendes ein:
quelle
Versuchen Sie einfach:
quelle
Wenn Sie ein Repository haben, mit dem geklont wurde,
--depth 1
funktionieren viele der aufgelisteten Befehle nicht. Zum Beispiel siehe hierIn diesem Fall würde ich das Repository erneut klonen, aber vielleicht gibt es andere Techniken, z. B. fehlen bei einem flachen Git-Klon (Klon - Tiefe) entfernte Zweige
quelle
Wenn Sie Ihren Remote-Zweig bereits so kennen ...
und Sie kennen den Filialnamen , den Sie auschecken möchten, z. B. br1.2.3.4 , und tun dies dann
Sie müssen nur noch die Filiale auschecken
Dann machen Sie neue Zweige daraus.
quelle
Die Schritte sind wie folgt;
git fetch origin
odergit fetch --all
, dies ruft alle Remote-Zweige zu Ihrem lokalen und dann die zweite Option, mit der Sie verfahren können.git checkout --track origin/<The_remote_branch you want to switch over>
Wenn Sie dann an diesem Zweig arbeiten, können Sie durch Eingabe überprüfen, ob Sie sich in diesem Zweig befinden oder nicht
Es zeigt den Zweig an, in dem Sie sich gerade befinden.
quelle
git branch <name> --track origin/<name>
quelle
Überprüfen Sie Ihre
.git/config
Datei, insbesondere, welche Nachverfolgung beim Abrufen für diese Fernbedienung vorhanden ist.Wenn es
heads/*
zeigt aufrandomRemote/*
, wenn Sie ausführengit fetch randomRemote
, werden alle Filialen holen.Dann können Sie einfach diesen Zweig auschecken.
Andernfalls,
Auf diese Weise müssen Sie dem Tracking Remote-Zweige hinzufügen. Überprüfen Sie Ihre
.git/config
nach dem Ausführen. Du wirst verstehen.Ausführen
git fetch randomRemote
. Dadurch wird der Remote-Zweig abgerufen.Jetzt kannst du rennen
git checkout randomBranch
.quelle
Sie verwenden "Git Pull", um Ihre Zweige getrennt zu halten. Ich werde die tatsächlichen Repository- und Zweigstellennamen verwenden, um zu helfen, da 'lbranch' und 'rbranch' schwer zu entschlüsseln sind.
Verwenden wir:
Sie oder ein Kollege können dies ausführen, um nur Ihren Zweig zu ziehen, egal wie viele Zweige es gibt:
quelle
Mit einem einfachen Befehl können
git checkout remote_branch_name
Sie einen lokalen Zweig erstellen, der alle Änderungen im Remote-Zweig enthält.quelle
quelle