Ziehen Sie einen bestimmten Zweig vom Remote-Server

Lesezeit: 6 Minuten

Benutzer-Avatar
tybro0103

Angenommen, jemand hat einen Zweig erstellt xyz. Wie ziehe ich den Ast xyz vom entfernten Server (zB GitHub) und mit einem bestehenden Zweig zusammenführen xyz in meinem lokalen Repo?

Die Antwort auf
Pushen Sie Zweige an Git gibt mir den Fehler “! [rejected]“ und erwähnt „kein schneller Vorlauf“.

  • Was ist der eigentliche Befehl, den Sie ausführen?

    – Alex N.

    10. November 2009 um 16:20 Uhr

  • Es ist ein Abruf, der mit der Meldung „Non Fast Forward“ fehlschlagen kann. Haben Sie den Remote-Tracking-Zweig (Ursprung/xyz) geändert oder wurde der Zweig im Remote-Repository zurückgespult / neu geschrieben? Möglicherweise müssen Sie “git fetch origin --force“, aber bitte lesen Sie die Dokumentation, bevor Sie dies tun.

    – Jakub Narębski

    10. November 2009 um 18:46 Uhr

  • Die Fernbedienung könnte beispielsweise eine Github-URL mit einem ausgewählten Zweig sein. (siehe Kommentar zu Cabris Antwort)

    – Philipp Oakley

    12. Februar um 16:09 Uhr

Aber ich bekomme eine Fehlermeldung “! [rejected]” und etwas über “non fast forward”

Das liegt daran, dass Git die Änderungen aus den Zweigen nicht in Ihren aktuellen Master zusammenführen kann. Angenommen, Sie haben die Filiale ausgecheckt masterund Sie möchten im Remote-Zweig zusammenführen other-branch. Wenn Sie dies tun:

$ git pull origin other-branch

Git macht im Grunde Folgendes:

$ git fetch origin other-branch && git merge other-branch

Das ist ein pull ist nur ein fetch gefolgt von einem merge. Allerdings wann pull-ing, Git wird nur verschmelzen other-branch wenn es kann a schnell vorspulen verschmelzen. EIN schnell vorspulen merge ist ein Merge, bei dem der Kopf des Branchs, mit dem Sie zusammenführen möchten, a ist direkter Nachkomme des Leiters der Filiale, die Sie zusammenführen möchten. Wenn Sie beispielsweise diesen Verlaufsbaum haben, dann Zusammenführen other-branch würde zu einem Fast-Forward-Merge führen:

O-O-O-O-O-O
^         ^
master    other-branch

Dies würde jedoch nicht ein Fast-Forward-Merge sein:

    v master
O-O-O
\
 \-O-O-O-O
         ^ other-branch

Erstmal um dein Problem zu lösen bringen der Remote-Zweig:

$ git fetch origin other-branch

Dann führen Sie es in Ihren aktuellen Zweig zusammen (ich nehme an, das ist master) und alle Zusammenführungskonflikte beheben:

$ git merge origin/other-branch
# Fix merge conflicts, if they occur
# Add merge conflict fixes
$ git commit    # And commit the merge!

  • Nein, das Problem liegt beim Abrufen, nicht beim Zusammenführungsschritt.

    – Jakub Narębski

    10. November 2009 um 22:02 Uhr

  • Normalerweise sind Remotes so eingerichtet, dass Abrufe erzwungen werden, auch wenn sie nicht zu einem Fast-Forward-Commit führen, daher sollte dies beim Abrufen nicht auftreten, es sei denn, das OP hat etwas an der üblichen Konfiguration geändert. Das Fast-Forward-Problem kann während des Abrufens auftreten oder verschmelzen. Was lässt Sie sagen, dass das Problem definitiv beim Abrufen und nicht beim Zusammenführen liegt?

    – Mipadi

    10. November 2009 um 23:31 Uhr

  • Ich befolge diese Schritte (Abrufen, Zusammenführen). Git sagt mir, dass es nichts zu tun gibt. Wenn ich versuche, mich zu verpflichten, fällt es um und stöhnt über den schnellen Vorlauf.

    – Jean Jordaan

    8. November 2011 um 17:08 Uhr

  • @mipadi Ich hatte das gleiche Problem wie Jean und obwohl ich nicht sagen kann, dass die Fernbedienung auf die von Ihnen erwähnte nicht standardmäßige Weise eingerichtet ist, kann ich sagen, dass sie verwendet wird git fetch -f habe mein Problem behoben! Vielen Dank!

    – Cregox

    28. Februar 2012 um 13:50 Uhr

  • Dadurch wird der Remote-Zweig zusammengeführt xzy in die örtliche Filiale master, was in der ursprünglichen Frage nicht impliziert wurde; “Wie kann ich den Zweig xyz von GitHub ziehen und ihn mit dem Zweig xyz auf meinem Localhost zusammenführen?”

    – Benutzer5359531

    10. März 2017 um 21:04 Uhr


Benutzer-Avatar
innaM

Verfolgen Sie einfach Ihre Remote-Zweige explizit und einfach git pull wird genau das tun, was Sie wollen:

git branch -f remote_branch_name origin/remote_branch_name
git checkout remote_branch_name

Letzteres ist eine lokale Operation.

Oder noch passender zu den GitHub-Dokumentation zum Forken:

git branch -f new_local_branch_name upstream/remote_branch_name

  • Wenn Sie “Kein gültiger Objektname: ‘origin/remote_branch_name'” erhalten, führen Sie zuerst ‘git fetch origin’ aus.

    – Martin Konicek

    4. Juni 2012 um 9:09 Uhr

  • fatal: Aktualisierung des aktuellen Zweigs kann nicht erzwungen werden.

    – Wolfgang Blessen

    25. Januar um 13:06 Uhr

Benutzer-Avatar
Robert Cabri

Ein sicherer Ansatz besteht darin, zuerst einen lokalen Zweig (dh xyz) zu erstellen und dann den Remote-Zweig in Ihre lokalen Zweige zu ziehen.

# create a local branch
git checkout -b xyz

# make sure you are on the newly created branch
git branch

# finally pull the remote branch to your local branch
git pull origin xyz

Hier ist die Syntax, die einen entfernten Zweig zu einem lokalen Zweig ziehen könnte.

git pull {repo} {remotebranchname}:{localbranchname}

git pull origin xyz:xyz

  • Perfekt! Ich kannte diese Syntax einfach nicht: git pull {repo} {remotebranchname}:{localbranchname}. Frage, wenn dieser Pull nicht funktioniert (vielleicht hat jemand den Zweig aktualisiert und es würde Merge-Konflikte geben), was sind meine Optionen?

    – Costa Michailidis

    29. Oktober 2013 um 14:18 Uhr

  • Ich lehne dies ab, weil es versucht, den Remote-Zweig mit Ihrem aktuellen Zweig (z. B. Master) zusammenzuführen. Dies ist nicht das, was die meisten Leute tun möchten, und es ist nicht das, wonach das OP gefragt hat. Die Antwort von @mohit ist die richtige Wahl.

    – Phrogz

    5. Februar 2016 um 5:01 Uhr

  • Phrogz – sieht so aus, als hätte sich dieses Verhalten in neueren Versionen von Git geändert. Ich habe das früher benutzt und es hat perfekt funktioniert.

    – Pfau

    10. Januar 2017 um 13:08 Uhr

  • Die Antwort ist ernsthaft irreführend!!! Ich habe die Antwort angewendet, ohne den Kommentar von @Phrogz zu bemerken, und leide jetzt unter dem von ihm/ihr erwähnten Problem. Entweder sollte explizit angegeben werden, welcher Zweig zusammengeführt werden soll, oder die Antwort sollte gelöscht werden !!!!

    – buraki

    25. Januar 2021 um 8:48 Uhr


  • @Phrogz,@Letitbe welchen Befehl hast du versucht? Ich kann die Antwort entsprechend ändern. Hatte nie das Problem, es in den Master zu ziehen.

    – Robert Cabri

    12. Februar 2021 um 15:18 Uhr

Benutzer-Avatar
mohit

Der beste Weg ist:

git checkout -b <new_branch> <remote repo name>/<new_branch>

Benutzer-Avatar
Bradley-Flut

git fetch wird die neueste Liste der Zweige abrufen.

Jetzt kannst du git checkout MyNewBranch

Fertig 🙂


Weitere Informationen finden Sie in den Dokumenten: git holen

  • es funktionierte gut git fetch, dann git checkout remoteBranch

    Benutzer7396942

    28. Juni 2021 um 13:55 Uhr

Benutzer-Avatar
Peter Mortensen

Ich bin mir nicht sicher, ob ich das Problem vollständig verstehe, aber das Ziehen eines vorhandenen Zweigs wird so durchgeführt (zumindest funktioniert es bei mir 🙂

git pull origin BRANCH

Dies setzt voraus, dass Ihr lokaler Zweig aus dem Ursprung/BRANCH erstellt wird.

  • es funktionierte gut git fetch, dann git checkout remoteBranch

    Benutzer7396942

    28. Juni 2021 um 13:55 Uhr

Einfach ausgedrückt, wenn Sie den Zweig von GitHub ziehen möchten the-branch-I-want:

git fetch origin
git branch -f the-branch-I-want origin/the-branch-I-want
git checkout the-branch-I-want

  • Wow, es hat funktioniert!! Normalerweise würde ich tun git checkout -b branch-i-want git pull origin branch-i-want Vielen Dank!

    – Alex Antoine

    25. Juli um 3:32 Uhr


1329370cookie-checkZiehen Sie einen bestimmten Zweig vom Remote-Server

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

Privacy policy