Soweit ich mich erinnere, konnte ich dies, wenn ich an einem Zweig arbeite, z. B. my-feature-branch
aus dem magit-status
Menü mit P P
und dann den entfernten Zweig aus einer Liste auswählen, origin/my-feature-branch
die oben stand. Das hat wunderbar funktioniert.
In letzter Zeit konnte ich ab dieser Diskussion etwas Ähnliches tun P -u e
(Öffnen des magit-push-popup
, Setzen des --set-upstream
Flags und Verwenden e
für anderswo), wodurch ich ebenfalls aus einer Liste von Zweigen auswählen konnte, die mit beginnen origin/my-feature-branch
. Das hat auch bei mir gut funktioniert. In jüngerer Zeit funktioniert dies jedoch nicht mehr, und ich konnte nicht herausfinden, wie ein Upstream-Zweig am besten eingerichtet werden kann.
Wenn ich P e
die erste Option für einen Zweig verwende, zu origin/my-feature-branch
der ich pushen möchte, ist dies fast immer das, was ich möchte. Es wird jedoch nicht origin/my-feature-branch
als Upstream für meine lokale Niederlassung festgelegt. Die Verwendung P u
ermöglicht es mir, den Upstream-Zweig auszuwählen, origin/my-feature-branch
befindet sich jedoch nicht in der Liste, und ich muss origin/my-feature-branch
ohne Tab-Vervollständigung tippen (ich weiß, dass dies nicht schwierig ist, aber anfällig für Benutzerfehler und langsamer als die Befehlszeile).
Ist dies die einzige Möglichkeit, jetzt einen Upstream-Zweig einzurichten, oder fehlt mir etwas? Ich habe mir andere Diskussionen und Dokumentationen zu diesem Thema angesehen, aber alle Quellen, die ich gefunden habe, scheinen veraltet zu sein.
<remote>/<branch>
Teil wurde versehentlich aus der Eingabeaufforderung herausgelassen (siehe diesen Kommentar ). In der Zwischenzeit können Siemagit-push-current-set-remote-if-missing
auf Null setzen.Antworten:
Es gibt verschiedene Möglichkeiten, den Upstream einzustellen, während oder gleichzeitig gedrückt wird.
Wenn dies
magit-push-current-set-remote-if-missing
nichtnil
der Fall ist (Standardeinstellung), wird Folgendes angezeigt:Um dies zu drücken
origin/feature
und als Upstream festzulegen, drücken Sie uund RETakzeptieren Sie dann den Standard-Abschlusskandidaten.Wenn
magit-push-current-set-remote-if-missing
janil
, dann würden Sie dies stattdessen sehen:Wenn Sie pjetzt gedrückt haben, wird Ihnen mitgeteilt, dass der Upstream nicht konfiguriert ist (was bedeutet, dass Sie nicht zum Upstream pushen können, wenn kein Upstream vorhanden ist).
Wenn dies
magit-push-current-set-remote-if-missing
jedochnil
der Fall ist , wird die Liste der Schalter angezeigt--set-upstream
, sodass Sie sie P - u pwie gewohnt verwenden können (außer dass das zweite p in Kleinbuchstaben geschrieben ist). Es gibt jedoch eine Komplikation: Nachdem Sie den Wert vonmagit-push-current-set-remote-if-missing
geändert haben, müssen Sie Emacs neu starten, damit er angezeigt--set-upstream
oder ausgeblendet wird.Schließlich können Sie den Upstream mit dem Befehl "Set Upstream (und nichts anderes tun)" einstellen : b u
origin/master
RET. Beachten Sie, dass Sie bei Verwendung dieses Ansatzes nur einen bereits vorhandenen Zweig auswählen können.Aber es wäre besser, die Push-Fernbedienung zu konfigurieren und darauf zu pushen. Weitere Informationen zur Push-Fernbedienung und zu den Unterschieden zum Upstream finden Sie im Verzweigungsknoten im Info-Handbuch (die Webversion wurde noch nicht aktualisiert).
Grundsätzlich ist der Upstream-Zweig höchstwahrscheinlich der Zweig, in den Ihr Feature-Zweig schließlich zusammengeführt wird (durch Zusammenführen oder erneutes Basieren, nicht durch Drücken)
origin/master
. Auf der Push-Fernbedienung können Sie Ihre Feature-Zweige verschieben, während Sie noch daran arbeiten, damit andere Personen sie zusammenführen können. Wenn der lokale Zweig benannt istfeature
und die Push-Fernbedienungmy-fork
, wird durch Drücken dieses Zweigs mit P pgedrücktmy-fork/feature
. (Der "Push-to-Branch" kann nicht konfiguriert werden. Der Name des Zweigs auf der Push-Fernbedienung stimmt immer mit dem lokalen Namen überein.)Während Ihre Frage so etwas wie "Wie drücke ich auf den Upstream, während ich gleichzeitig den Upstream konfiguriere" lautete, ist meine Empfehlung, überhaupt nicht auf den Upstream zu pushen, sondern stattdessen auf die Push-Fernbedienung.
Vorausgesetzt, Sie haben den Wert von nicht geändert
magit-push-current-set-remote-if-missing
, können Sie die Push-Fernbedienung mit konfigurieren P psome-remote
RET. Da Sie jedoch wahrscheinlich alle Feature-Zweige auf dieselbe Fernbedienung übertragen, ist es besser, die Push-Fernbedienung einmal für alle Zweige einzustellen und damit fertig zu sein: bund dann, M-pbis die richtige Fernbedienung ausgewählt ist.Beachten Sie auch, dass es normalerweise nicht erforderlich sein sollte, den Upstream-Zweig explizit festzulegen. Wenn Sie einen neuen Zweig erstellen und einen Remote-Zweig als Ausgangspunkt auswählen, wird dieser als Upstream verwendet.
Leider ist der Ausgangspunkt normalerweise ein lokaler Zweig, und in diesem Fall verwendet Git ihn standardmäßig nicht als Upstream. Dies kann jedoch leicht behoben werden, indem Sie dies einmal ausführen:
Der Standardwert ist
true
"Startpunkt als Upstream festlegen, sofern es sich um einen Remote- Zweig handelt".Gleiches gilt übrigens für die Push-Fernbedienung. Auch das sollte normalerweise halbautomatisch in "neuen" Repositorys eingestellt werden. Wenn Sie ein Repository klonen, werden Sie gefragt, ob Sie es
origin
als Push-Remote verwenden möchten . Sie sollten mit "Ja" antworten, es sei denn, Sie fügen beispielsweise eine weitere Fernbedienung hinzu,my-fork
die als Push-Fernbedienung verwendet werden soll. Wenn Sie eine neue Fernbedienung mit hinzufügen M aundremote.pushDefault
noch nicht eingestellt sind, werden Sie gefragt, ob Sie die neu hinzugefügte Fernbedienung als Push-Fernbedienung verwenden möchten.Dies kann mit
magit-clone-set-remote.pushDefault
und konfiguriert werdenmagit-remote-add-set-remote.pushDefault
.Eine weitere erweiterte Option ist
magit-branch-prefer-remote-upstream
die Standardeinstellungnil
. Wenn Sie es auf setzent
und dann einen lokalen Zweig als Startpunkt für einen neuen Zweig auswählen, wird möglicherweise der Upstream des Startpunkts (gemäß einigen Regeln, siehe doc-string) anstelle des Upstreams verwendet der Ausgangspunkt selbst.quelle