Git zieht einen bestimmten Zweig von GitHub

Lesezeit: 6 Minuten

Git zieht einen bestimmten Zweig von GitHub
tybro0103

Ich habe ein Projekt mit mehreren Branches. Ich habe sie dazu gedrängt GitHub, und jetzt, da jemand anderes an dem Projekt arbeitet, muss ich seine Branches von GitHub ziehen. Im Master funktioniert es einwandfrei. Aber sagen Sie, dass jemand einen Zweig erstellt hat xyz. Wie kann ich Zweig ziehen xyz von GitHub und führen Sie sie in den Zweig ein xyz auf meinem localhost?

Eigentlich habe ich hier meine Antwort:
Push- und Pull-Zweige in Git

Aber ich bekomme eine Fehlermeldung “! [rejected]“ und etwas über „nicht schneller Vorlauf“.

Irgendwelche Vorschläge?

  • 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! Danke!

    – 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


Git zieht einen bestimmten Zweig von GitHub
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

Git zieht einen bestimmten Zweig von GitHub
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

1646321290 524 Git zieht einen bestimmten Zweig von GitHub
mohit

Der beste Weg ist:

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

1646321291 892 Git zieht einen bestimmten Zweig von GitHub
Bradley-Flut

git fetch wird die neueste Liste der Zweige abrufen.

Jetzt kannst du git checkout MyNewBranch

Getan 🙂


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

1646321291 2 Git zieht einen bestimmten Zweig von GitHub
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

1646321291 936 Git zieht einen bestimmten Zweig von GitHub
Adrian Renaud

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

924780cookie-checkGit zieht einen bestimmten Zweig von GitHub

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

Privacy policy