Wenn ich einen Git schieben, sehe ich 3 Zweige beteiligt. 1) Der lokale Zweig, an dem ich arbeite, sage 'foo1' 2) den lokalen Remote-Tracking-Zweig 'origin/foo2' (der immer nach dem Drücken/Ziehen denselben Commit wie der entfernte foo3 hat) 3) 'foo3' in das entfernte Repo. Normalerweise würden sie alle foo heißen, aber ich möchte andere Namen haben, damit ich Git verstehen und diese Frage hier stellen kann. Ich verstehe nicht, wo ich foo2 angeben kann. Wenn ichGeben Sie den 'Ursprung/Master' Teil in einem Git drücken
git push origin foo1:foo3
Und das in meinem .git/config mit
[branch "master"]
remote = origin
merge = refs/remotes/origin/foo2
Punkt 1 und 3 sind in Ordnung, aber ich habe nicht einen Ursprung/foo2 in meinem lokalen Repo. Was vermisse ich? Oder ist die Antwort, dass meine Remote-Tracking-Filialen sind immer benannt genau die gleiche Art und Weise wie die Fernbedienungen - das wäre in Ordnung für mich - ich will nur Git richtig zu verstehen.
Das git-push Handbuch spricht auch nur von zwei Referenzen (refspec src und dst), Punkt 1 und 3, in meinem Beispiel. Wo wird das Handbuch nach der Aktualisierung des dst-Zweigs im Remote-Repo aktualisiert, wird auch die lokale Remote-Tracking-Referenz aktualisiert?
@ VonCs Antwort ist richtig (natürlich :-)). Ich vermute, das grundlegende Problem hier ist, dass Sie über die offensichtliche Symmetrie zwischen "Push" und "Pull" stolpern. Es ist eine falsche Symmetrie. Das Gegenteil von 'push' ist nicht' pull', es ist 'fetch'. (Auch dann sind sie nicht genau symmetrisch.) Behalte das im Hinterkopf und alles sollte mehr Sinn ergeben. – torek