Wie kann verhindert werden, dass Magit fragt, wohin ein Zweig geschoben werden soll?
10
Beim Aufruf magit-push-currentmit P Paus dem Statuspuffer, Magit 2.1.0fragt 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?
Falls Sie es nicht wissen, ist der automatisch generierte Name eine der Abschlussoptionen. Wenn Sie also zum ersten Mal some-branch-nameauf die originFernbedienung drücken , können Sie wahrscheinlich einfach tippen o TAB s TABund erhalten den gewünschten Namen.
Malabarba
Oh ok ich wusste es nicht, danke. Das Problem ist, dass ich viele Zweige habe, die mit denselben Präfixen beginnen, was nicht sehr praktisch ist. Außerdem habe ich immer entfernte Zweige mit demselben Namen wie die lokalen Zweige eingerichtet.
z1naOK9nu8iY5A
Antworten:
8
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-upstreamSchalter 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 pushohne Argumente läuft . Was das macht, hängt dann ausschließlich von der Git-Konfiguration ab.
Ich habe von verzweigt masterund es wurde nicht Upstream eingerichtet. Sollte ich vielleicht von verzweigen origin/master, um den Upstream automatisch einzustellen?
z1naOK9nu8iY5A
Siehe aktualisierte Antwort.
Tarsius
1
Verzweigung vom origin/masterSet origin/masterals Upstream, aber ich hätte erwartet, origin/branch-nameals Upstream zu haben .
z1naOK9nu8iY5A
Wenn Sie das möchten, ist es am besten, dies während des Pushs zu tun. P -p P <... completion ...> RETBeachten Sie, dass dies origin/branch-nameals Abschlusskandidat angeboten wird, sodass Sie es nicht eingeben müssen.
Tarsius
2
Dies ist schmerzhaft, wenn Sie Gitflow- und Pull-Anforderungen für die Codeüberprüfung mit einem Zweig pro Feature verwenden, da Sie normalerweise nur einmal pushen und immer einen Remote-Zweig mit demselben Namen wie der lokale Zweig erstellen müssen. Das Verschieben in einen Zweig mit einem anderen Namen wäre ein Ende der Codeüberprüfung.
Barry Kelly
3
Ich verwende den folgenden Rat, der automatisch aktiviert wird, --set-upstreamwenn 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:
Ich erstelle einfach den neuen Zweig mit b cund bearbeite dann die .git/configDatei so, dass sie zeigt, origin/branchanstatt mit all dem Magit 2-Zeug herumzuspielen, was sowieso nicht zu funktionieren scheint.
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.
Der Upstream kann mit eingestellt werden bu. Aber das nutzt git branch --set-upstream-tound wie Sie wissen, kann Git keinen nicht existierenden Zweig als Upstream festlegen und Magit auch nicht.
Tarsius
@tarsius magit 1 schien zu tun, was ich brauchte. Ich versuche nur, einen Anschein dieses Workflows zurückzugewinnen.
some-branch-name
auf dieorigin
Fernbedienung drücken , können Sie wahrscheinlich einfach tippeno TAB s TAB
und erhalten den gewünschten Namen.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.quelle
master
und es wurde nicht Upstream eingerichtet. Sollte ich vielleicht von verzweigenorigin/master
, um den Upstream automatisch einzustellen?origin/master
Setorigin/master
als Upstream, aber ich hätte erwartet,origin/branch-name
als Upstream zu haben .P -p P <... completion ...> RET
Beachten Sie, dass diesorigin/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:In Kombination mit der Ido-Vervollständigung ermöglicht dies das Verschieben eines neuen Zweigs mit P P RET:
quelle
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:
Zu
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.
quelle
bu
. Aber das nutztgit branch --set-upstream-to
und wie Sie wissen, kann Git keinen nicht existierenden Zweig als Upstream festlegen und Magit auch nicht.