Wenn Sie mit Magit (mit P P
) einen Zweig pushen und der Zweig keinen Upstream hat, fragt Magit Sie nach dem Namen des Zweigs, zu dem Sie pushen möchten. Das ist großartig.
Sobald Sie den Upstream für einen Zweig eingerichtet haben, werden Sie von Magit nicht mehr gefragt, wohin Sie ihn verschieben möchten. Dies ist normalerweise praktisch (Sie möchten nicht jedes Mal gefragt werden), macht es jedoch schwierig, einen Zweig auf einen anderen entfernten Zweig zu verschieben.
Gibt es eine Möglichkeit, Magit erneut nach dem Zielzweig fragen zu lassen, auch wenn der aktuelle Zweig bereits einen Upstream hat?
Anwendungsfall
Es ist durchaus üblich, dass ich einen Zweig wie diesen habe:
Local: issue-30 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
und ich möchte sowohl lokale als auch entfernte Zweige in ändern issue-30-and-34
. Wenn ich den Zweig "Lokal" umbenenne, bleibt mir Folgendes übrig:
Local: issue-30-and-34 ~/Git-Projects/repo/
Remote: issue-30 @ origin ([email protected]:.../repo.git)
Head: ebe4054 Some commit message
Auch wenn ich löschen origin/issue-30
, tun P P
auf issue-30-and-34
wird die einfach neu erstellen origin/issue-30
.
Was ich am Ende mache, ist das Folgende, aber es fühlt sich ziemlich rund an für etwas, das mit einem einzigen git
Befehl erledigt werden kann :
- Erstellen Sie einen neuen Zweig mit dem Namen
issue-30-and-34
(anstatt den alten umzubenennen), - Löschen Sie sowohl die lokale als auch die Remote-Version von
issue-30
, - push
issue-30-and-34
(da es noch keinen Upstream gibt, wird Magit mich fragen, wo ich pushen soll).
Antworten:
Mit können
v2.1
Sie den Upstream der aktuellen Niederlassung in eine entfernte oder lokale Niederlassung ändern bu[REMOTE/]BRANCH
RET. Beginnend mitv2.4
, wenn ein Upstream bereits festgelegt ist, buwird es nur deaktiviert. Drücken Sie uerneut einen neuen Wert zu setzen.Beginnend mit
v2.4
und wenn der Upstream nicht eingestellt ist, können Sie den Upstream auch während des Drückens mit einstellen pu[REMOTE/]BRANCH
RET. Sie werden automatisch gefragt, welcher Zweig als Upstream verwendet werden soll. Sobald ein Upstream eingestellt wurde pu, können Sie den Upstream ändern. So ändern , die stromaufwärts, müssen Sie den Ansatz im vorhergehenden Absatz beschriebenen verwenden.Zuvor war
v2.4
es auch möglich, den Remote-Zweig, zu dem Sie pushen, als Upstream-Zweig festzulegen p-ueREMOTE/BRANCH
RET. Aber jetzt ist der--set-upstream
Schalter standardmäßig nicht mehr im Push-Popup verfügbar . Sie können es zurückbekommen, indem Siemagit-push-current-set-remote-if-missing
auf null setzen. Dies hat zwei Auswirkungen: Der--set-upstream
Switch ist nach dem nächsten Neustart wieder verfügbar und die im vorherigen Absatz beschriebene Vorgehensweise funktioniert nicht mehr.Wenn Sie möchten, dass beide im zweiten und dritten Absatz beschriebenen Funktionen gleichzeitig verfügbar sind, lassen Sie dies
magit-push-current-set-remote-if-missing
unberührt und fügen Sie Folgendes zu Ihrer Init-Datei hinzu:quelle
P C-u C-u P
Drücken Sie " ", damit Magit Sie fragt, welche Remote- und Remote-Verzweigung verwendet werden soll, bevor Sie drücken.(Mit einem einzelnen Präfix-Argument ("
P C-u P
") fragt Magit, welche Fernbedienung verwendet werden soll.)Ich fand dies, indem ich
P C-h k P
einen Magit-Statuspuffer drückte , die Dokumente vonmagit-push
und lasmagit-push-dwim
(diese Dokumente scheinen veraltet zu sein, übrigens) und experimentierte.PS: Ich benutze Magit
magit-1.2.0-2049-ge6839e8
.quelle
Es sieht so aus, als ob es sich jetzt unter dem Abschnitt branch / configure befindet:
b
C
p
um die pushRemote zu setzenquelle
Ab November 2016 und spätestens
magit
hier eine Teillösung:P
e
- Ermöglicht das Drückenelsewhere
, aber es wird nicht gespeichertIch konnte keinen Weg für magit finden
--set-upstream
, also habe ich das einfach vom Terminal aus gemacht, eine Art Betrug, aber es hat mich über dieses Problem gebracht:git push --set-upstream origin <branch-name>
Und jetzt ist der neue Upstream gespeichert und ich kann mein nächstes Ding bauen :)
quelle
--set-upstream
" - Vielleicht solltest du versuchen , die Antwort vonmagit
hat sich seitdem ein wenig geändert, und ich hoffe, dass meine Lösung jemandem ein paar zusätzliche Minuten erspart