Ich habe ein Projekt mit mehreren Niederlassungen. Ich habe sie zu GitHub verschoben , und jetzt, da jemand anderes an dem Projekt arbeitet, muss ich ihre Zweige von GitHub abrufen. Es funktioniert gut im Master. Aber sagen Sie, dass jemand einen Zweig erstellt hat xyz
. Wie kann ich einen Zweig xyz
von GitHub abrufen und ihn xyz
auf meinem Zweig zusammenführen localhost
?
Ich habe hier tatsächlich meine Antwort: Push and Pull-Zweige in Git
Aber ich bekomme einen Fehler "! [Abgelehnt]" und etwas über "nicht schneller Vorlauf".
Irgendwelche Vorschläge?
git fetch origin --force
" verwenden, aber bitte lesen Sie die Dokumentation, bevor Sie es tun.Antworten:
Das liegt daran, dass Git die Änderungen aus den Zweigen nicht in Ihrem aktuellen Master zusammenführen kann. Angenommen, Sie haben den Zweig ausgecheckt
master
und möchten ihn im Remote-Zweig zusammenführenother-branch
. Wenn Sie dies tun:Git macht im Grunde das:
Das heißt, a
pull
ist nur einfetch
gefolgt von amerge
. Wennpull
-ing jedoch zusammengeführt wird, wird Git nur zusammengeführt,other-branch
wenn eine Schnellvorlaufzusammenführung durchgeführt werden kann . Eine Schnellvorlaufzusammenführung ist eine Zusammenführung, bei der der Kopf des Zweigs, in den Sie zusammenführen möchten, direkt von dem Kopf des Zweigs abstammt, den Sie zusammenführen möchten. Wenn Sie beispielsweise über diesen Verlaufsbaum verfügen, führt das Zusammenführenother-branch
zu einer schnellen Zusammenführung:Dies wäre jedoch kein schneller Vorlauf:
Um Ihr Problem zu lösen, rufen Sie zuerst den Remote-Zweig ab:
Führen Sie es dann in Ihrem aktuellen Zweig zusammen (ich nehme an, dass dies der Fall ist
master
) und beheben Sie alle Zusammenführungskonflikte:quelle
git fetch -f
ich mein Problem behoben habe! Vielen Dank!xzy
mit dem lokalen Zweig zusammengeführtmaster
, was in der ursprünglichen Frage nicht impliziert wurde. "Wie kann ich Zweig xyz von GitHub abrufen und in Zweig xyz auf meinem lokalen Host zusammenführen?"Verfolgen Sie einfach Ihre Remote-Filialen explizit und ein einfacher
git pull
wird genau das tun, was Sie wollen:Letzteres ist eine lokale Operation.
Oder noch passender zur GitHub-Dokumentation zum Gabeln :
quelle
Mit den folgenden Befehlen können Sie einen Zweig zu einem Zweig ziehen.
Wenn Sie sich in der Hauptniederlassung befinden, können Sie auch zuerst eine Verzweigung wie folgt auschecken:
Dadurch wird ein neuer Zweig "xyz" vom Master erstellt und direkt ausgecheckt.
Dann machst du:
Dadurch wird der neue Zweig in Ihren lokalen
xyz
Zweig gezogen.quelle
Der beste Weg ist:
quelle
git fetch
holt sich die neueste Liste der Filialen.Jetzt kannst du
git checkout MyNewBranch
Erledigt :)
Weitere Informationen finden Sie in den Dokumenten: git fetch
quelle
Ich bin nicht sicher, ob ich das Problem vollständig verstehe, aber das Ziehen eines vorhandenen Zweigs erfolgt folgendermaßen (zumindest funktioniert es bei mir :)
Dies setzt voraus, dass Ihre lokale Niederlassung außerhalb des Ursprungs / BRANCH erstellt wird.
quelle
Dies hat mir geholfen, einen Remote-Zweig zu erhalten, bevor ich ihn in einen anderen zusammenführte:
quelle
Einfach ausgedrückt, wenn Sie den Zweig von GitHub ziehen möchten
the_branch_I_want
:quelle
Wenn Sie Ihrem Code nur Repo zugewiesen haben, ist der Gitreponame normalerweise der Ursprung.
Wenn Sie an zwei Repos arbeiten, von denen eines lokal und eines für Remote ist, können Sie die Repo-Liste von git remote -v aus überprüfen . Dies zeigt, wie viele Repos Ihrem aktuellen Code zugewiesen sind.
BranchName sollte im entsprechenden Gitreponame vorhanden sein.
Sie können die folgenden zwei Befehle verwenden, um Repos hinzuzufügen oder zu entfernen
quelle
Sie können auch tun
Beheben Sie etwaige Zusammenführungskonflikte
-r ist für Rebase. Dadurch erhalten Sie eine Verzweigungsstruktur von
zu
Dies wird zu einer saubereren Geschichte führen. Hinweis: Falls Sie Ihren anderen Zweig bereits zum Ursprung (oder zu einer anderen Fernbedienung) verschoben haben, müssen Sie möglicherweise den Zweig nach dem erneuten Basen erzwingen.
quelle
Ich tat
Anstatt
Wie von @innaM vorgeschlagen. Als ich die Upstream-Version verwendete, stand dort 'fatal: Kein gültiger Objektname:' upstream / remote_branch_name ''. Ich habe es nicht
git fetch origin
als Kommentar vorgeschlagen, sondern einfach ersetztupstream
mitorigin
. Ich denke, sie sind gleichwertig.quelle