Ich schreibe ein Skript, um eine Git-Aufgabe zu automatisieren. Wenn ich das manuell mache, gibt es ein paar Stellen, an denen Git Vim öffnet, um eine Commit-Nachricht zu bearbeiten, und ich muss eingeben :wq
. Gibt es eine Möglichkeit, diese Tastenanschläge aus meinem Skript vorab zu senden, aber nur, wenn Vim geöffnet wird? Gibt es alternativ eine Möglichkeit, das Öffnen von Vim von vornherein zu vermeiden?
Ich verwende tcsh.
Antwort1
Sie könnten es einfach von vornherein vermeiden, Vim zu öffnen.
Eine Möglichkeit hierfür besteht darin, die Option --message=<message>
(oder -m <message>
kurz ) zu verwenden git subtree pull
. Der Nachteil besteht darin, dass Sie die von Git bereitgestellte Standardnachricht nicht verwenden können und sich stattdessen eine eigene ausdenken müssen. Der Vorteil besteht darin, dass dies praktisch überall funktionieren sollte, wo Git eine Commit-Nachricht benötigt.
Eine weitere Option, dietutVerwenden Sie die Standardnachricht, um den „Editor“, den Git öffnet, in cat zu ändern. Denken Sie daran, ihn sofort danach wieder zurück zu ändern:
git config --local core.editor /path/to/cat
git subtree pull --prefix foo/bar/path repo branch --squash
git config --local core.editor /path/to/vim-or-other-editor
Der Vorteil hierbei ist, dass Sie die von Git bereitgestellte Standardnachricht verwenden können. Der Nachteil besteht darin, dass dies nicht funktioniert, wenn die Standard-Commit-Nachricht leer ist, wie es bei einem einfachen typisch ist git commit
.