Beim Aufruf magit-push-current
mit P P
aus dem Statuspuffer, Magit 2.1.0
fragt mich , wo die Niederlassung auf das erste Mal drücken, wenn stromaufwärts nicht gesetzt ist.
Wie kann der Name automatisch generiert werden, wie zuvor?
Beim Aufruf magit-push-current
mit P P
aus dem Statuspuffer, Magit 2.1.0
fragt mich , wo die Niederlassung auf das erste Mal drücken, wenn stromaufwärts nicht gesetzt ist.
Wie kann der Name automatisch generiert werden, wie zuvor?
Antworten:
Update: Der unten erwähnte "Push-Zweig" wurde inzwischen implementiert. Weitere Informationen finden Sie in der Dokumentation zum Verzweigen .
Sie müssen den Upstream-Zweig einmal einstellen. Sobald Sie das getan haben P PSchübe zu , dass und Sie werden Listen von unpulled und nicht gedrückten Änderungen in dem Statuspuffer erhalten (sofern vorhanden).
Es gibt verschiedene Möglichkeiten, den Upstream-Zweig einzurichten. Sie können den --set-upstream
Schalter aus dem Push-Popup verwenden : P -u P. Oder verwenden Sie den Befehl, der den Upstream festlegt und nichts anderes tut : b u.
Außerdem legt Magit jetzt beim Erstellen eines neuen Zweigs automatisch den Upstream-Zweig fest, sofern der "Startpunkt" ein Zweigname ist. Dies funktioniert für lokale und entfernte "Upstreams". Beachten Sie jedoch, dass dies beim Pushing nicht hilfreich ist, wenn Sie einen lokalen Zweig als Ausgangspunkt auswählen. Das Verschieben vom aktuellen Repository in das aktuelle Repository ist offensichtlich nicht sinnvoll und nicht zulässig.
Wenn der "Upstream" -Zweig tatsächlich ein anderer lokaler Zweig ist, P Pverhält er sich so, als ob kein Upstream-Zweig konfiguriert wäre, und verhält sich genau so P e. Gleiches gilt, wenn überhaupt kein Upstream konfiguriert ist.
Dies liegt an einer Einschränkung in Git: Man kann einem Zweig nur einen anderen Zweig zuordnen, und dieser Zweig wird dann als "Upstream-Zweig" bezeichnet. Es wäre besser, wenn es mindestens einen "Upstream" - und einen "Publish" -Zweig gäbe. Ich beabsichtige, das irgendwann in Magit umzusetzen. Siehe Ausgabe Nr. 1485 .
Wenn Sie also in der Lage sein möchten, mit genau P Pdann zu pushen, muss der "Upstream" -Zweig zB "Ursprung / Master" sein, nicht "Master".
Ich denke darüber nach, eine Push-Variante hinzuzufügen, die immer nur git push
ohne Argumente läuft . Was das macht, hängt dann ausschließlich von der Git-Konfiguration ab.
master
und es wurde nicht Upstream eingerichtet. Sollte ich vielleicht von verzweigen origin/master
, um den Upstream automatisch einzustellen?
origin/master
Set origin/master
als Upstream, aber ich hätte erwartet, origin/branch-name
als Upstream zu haben .
P -p P <... completion ...> RET
Beachten Sie, dass dies origin/branch-name
als Abschlusskandidat angeboten wird, sodass Sie es nicht eingeben müssen.
Ich verwende den folgenden Rat, der automatisch aktiviert wird, --set-upstream
wenn der aktuelle Zweig noch keinen Upstream hat:
(defun magit-push-arguments-maybe-upstream (magit-push-popup-fun &rest args)
"Enable --set-upstream switch if there isn't a current upstream."
(let ((magit-push-arguments
(if (magit-get-remote) magit-push-arguments
(cons "--set-upstream" magit-push-arguments))))
(apply magit-push-popup-fun args)))
(advice-add 'magit-push-popup :around #'magit-push-arguments-maybe-upstream)
In Kombination mit der Ido-Vervollständigung ermöglicht dies das Verschieben eines neuen Zweigs mit P P RET:
;; NOTE: requires ido-completing-read+
(setq magit-completing-read-function #'magit-ido-completing-read)
Ich erstelle einfach den neuen Zweig mit b c
und bearbeite dann die .git/config
Datei so, dass sie zeigt, origin/branch
anstatt mit all dem Magit 2-Zeug herumzuspielen, was sowieso nicht zu funktionieren scheint.
Veränderung:
[branch "fix_something"]
remote = .
merge = refs/heads/master
Zu
[branch "fix_something"]
remote = origin
merge = refs/heads/fix_something
Dies funktioniert, obwohl ich in magit2 noch keine Tastenkombination gefunden habe, die das Gleiche bewirkt. Der Versuch, die Fernbedienung einzustellen, funktioniert nicht, da sie im Ursprung noch nicht vorhanden ist.
bu
. Aber das nutzt git branch --set-upstream-to
und wie Sie wissen, kann Git keinen nicht existierenden Zweig als Upstream festlegen und Magit auch nicht.
some-branch-name
auf dieorigin
Fernbedienung drücken , können Sie wahrscheinlich einfach tippeno TAB s TAB
und erhalten den gewünschten Namen.