2013-10-31 6 views
30

Ich verwende vim gerne als Standard-Editor für Commits und möchte es nicht ändern. Allerdings, wenn es um das Rebasing geht, finde ich mich Dutzende und Dutzende von Commits quetschen, die ich viel einfacher mit einem interaktiven Editor wie Textwrangler (Ersetzung von "Pick" durch "Squash" in allen außer der Top-Commit) finde.git rebase --editor =/etwas/anderes/als/vim? (für leichteres Quetschen)

Gibt es eine Möglichkeit, einen alternativen Editor für einen einmaligen Rebase-Befehl anzugeben?

Ich weiß, in vim ich tun kann:

:%s/pick/squash/ 

aber das hat seine eigenen kleineren Ärgernisse.

EDIT - wie in den Kommentaren erwähnt, können Sie alle, aber die Top-commit sehr effizient Squash in die 2. Zeile gehen und

:,$s/pick/squash/ 

(beachten Sie das Komma und Dollar sind unterschiedlich zu der ursprünglichen Ausführung)

+5

In vim, können Sie ':, $ s/Pick/Squash /', die alle Vorkommen von * aktuellen ändern Linie * bis zum Ende der Datei. –

+0

Das ist ein guter Tipp, danke Greg. Ja, das war der "kleine Ärger", auf den ich anspielte. –

+0

Angenommen, Sie haben eine aktuelle vim-Version oder haben das vim-git-Plugin von Tim Pope installiert, können Sie die Befehle ': Cycle' oder': Squash' verwenden. Vielleicht möchten Sie sogar ein Mapping verwenden. Vielleicht benutze den ': global' Befehl:': +, $ g /./ Squash' –

Antwort

41

Versuchen Sie, die GIT_EDITOR Umgebungsvariable, bevor Sie Ihren Befehl hinzufügen, etwa so:

GIT_EDITOR=<editor of choice> git rebase <...> 

Zum Beispiel nano zu verwenden, würde ich geben:

GIT_EDITOR=nano git rebase -i abcdef1234 
+0

Da Sie es nicht exportieren, wird dieser Variablenwert zurückgesetzt, wenn der Befehl beendet wird? (Das wäre ideal, aber ich schätze, dass Sie es manuell zurücksetzen müssen) –

+1

Die Variable wird nur für diesen einen Befehlseinruf festgelegt. Versuchen Sie, 'git rebase' erneut auszuführen, ohne' GIT_EDITOR' und Sie werden Ihren Standard-Editor erneut verwenden. –

+0

Super, das ist die richtige Antwort dann. Obwohl ich denke, dass meine Ängste ein bisschen mehr zu lernen waren irrational –

4

Es eine noch bessere Option für all interaktive rebase ist.

https://github.com/sjurba/rebase-editor

Es ist eine App benutzerdefinierte CLI in Knoten geschrieben speziell für interaktives Unterfütterungsmaterial.

zu installieren:

npm install -g rebase-editor 
git config --global sequence.editor rebase-editor 

Oder mit Garn:

yarn global install rebase-editor 
git config --global sequence.editor rebase-editor