Ich benutze Gerrit. Wenn ich meine Commits verschieben möchte, verwende ich den folgenden Befehl:
git push origin HEAD:refs/for/master
Wie kann ich denselben Befehl mit neu erstellen Magit
?
Nach einer Weile hatte ich genug Zeit, um es selbst zu beheben.
Ich kenne keinen "out-of-the-box" Weg, dies zu tun; Sie können Magit jedoch erweitern, um es Ihren Anforderungen anzupassen.
Erstens habe ich eine Funktion geschrieben, die zu Gerrit führen würde:
(defun magit-push-to-gerrit ()
(interactive)
(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel)))
Als nächstes habe ich es hinzugefügt, um das Menü zu drücken:
(transient-append-suffix 'magit-push "p"
'("m" "Push to gerrit" magit-push-to-gerrit))
Diese beiden Formulare befinden sich in meiner Init-Datei.
Und das ist es! Jetzt kann ich P mzum Gerrit pushen.
Update : Wenn Sie ein bestimmtes Commit und nicht HEAD pushen möchten, können Sie diese Funktion verwenden (auch aktualisiert mit magit-git-command-topdir, wie im Kommentar angegeben):
(defun magit-push-to-gerrit (source)
"Push an arbitrary branch or commit to gerrit. The source is read in the minibuffer."
(interactive
(let ((source (magit-read-local-branch-or-commit "Push")))
(list source)))
(magit-git-command-topdir (concat "git push origin " source ":refs/for/master")))
(magit-git-command "push origin HEAD:refs/for/master" (magit-toplevel))
. Sie möchten(magit-git-command-topdir "git push origin HEAD:refs/for/master")
stattdessen verwenden.magit-obsolete.el
:* If you add additional arguments and/or actions to Magit's popups, then you have to port that to modify the new \"transients\" instead.
Siehe github.com/magit/magit/wiki/…Verwenden Sie
!
, um einen generischen git-Befehl zu verwenden, dann können Sie einfach schreiben:push origin HEAD:refs/for/master
fast wie üblich.Hier gibt es auch ein spezielles Paket
gerrit
: https://github.com/terranpro/magit-gerrit Ich habe es jedoch nicht persönlich verwendet, weiß also nicht genau, wie ich es verwenden soll.BEARBEITEN
In einer neueren Version von
magit
ist es jetzt möglich, eine explizite Git-Referenz aus dem rUnterbefehl anzugeben .gerrit
Um zur Referenz zu gelangen, verwenden Sie einfach:P r"origin" RET"HEAD: refs / for / master"
Dies ist zwar keine wirkliche Abkürzung, da Sie noch mehr Tastendrücke ausführen müssen , aber sie ist sofort verfügbar.
quelle
git push 'elsewhere'
aber das stellt 'refs / Heads /' vor das Zweigstellenziel, so dass dies nicht sofort funktioniertgerrit
.