/ / Kann ich in einen anderen Zweig als den, in dem ich bin, ziehen? - Git, Zweig, Git-Pull

Kann ich in einen anderen Zweig als den, in dem ich bin, ziehen? - Git, Zweig, Git-Pull

Ich muss in der Lage sein, zu einem Zweig zu ziehen, auf dem ich nicht sein könnte (in der Tat, um der Argumentation willen weiß ich nicht, auf welchem ​​Zweig ich bin). Zum Beispiel habe ich eine Fernbedienung origin mit einem Zweig master das wird lokal in der üblichen Weise von einem lokalen verfolgt master einen Tracking-Zweig verwenden. Gibt es Optionen oder Argumente, die ich liefern kann? git-pull das hat den gleichen Effekt wie das Umschalten auf masterZiehen, und dann zurück zu dem Zweig, auf dem ich angefangen habe?

Viele Antworten deuten darauf hin, dass dies nicht möglich ist, aber die Dokumentation "s Diskussion von <dst> unter <refspec> schlägt vor, dass etwas wie

git pull origin master:master

wird den Trick machen. Ist das so?

Antworten:

4 für die Antwort № 1

EIN git pull macht im Grunde a git fetch gefolgt von einem git merge.

Tun git pull für einen anderen Zweig ist nicht möglich, weil zu tun git merge für eine andere Filiale ist nicht möglich. Tun können git merge, müssen Sie zuerst den Zielzweig auschecken. Aus dem gleichen Grund können Sie nicht tun git pull für einen anderen Zweig.

@torek fügte einen ausgezeichneten Punkt hinzu:

Und um den Git-Pull-Ursprung x: y zu adressieren: git pull übergibt das x: y-Argument an git fetch, sodass git fetch das tut, was es tut; aber dann versucht git pull, in den aktuellen Zweig einzutreten, unabhängig von x und / oder y.

Siehe auch als Referenz:

Zweige ohne Checkout zusammenführen


1 für die Antwort № 2

Ich habe nie den Master gesehen: Master-Syntax. Allgemein: git pull Herkunft wie Master.

Ich denke, was Sie tun wollen, ist zuerst einen holen. Dann haben Sie die Möglichkeit, alle Tracking-Zweige zusammenzuführen oder zu diesen zu wechseln.


0 für die Antwort № 3

Ein Pull ist grundsätzlich ein Fetch gefolgt von einem Checkout der Updates im aktuellen (Tracking-) Zweig. Alles, was Sie wollen, ist der Abruf.

git fetch origin master:master

0 für die Antwort № 4

Brauchen Sie wirklich die Zusammenführungsfunktion von git pull?

Wenn nicht, könnten Sie einfach tun:

git fetch
git branch -f master origin/master

Dies bewirkt, dass der lokale Master auf denselben Commit zeigt, auf den der Remote-Master verweist.