Ich verwende ein kleines Skript, um vergangene Übertragungen zu korrigieren. Das Skript geht davon aus, dass der Fix für den kaputten Commit bereitgestellt wird, dass das Arbeitsverzeichnis sauber ist und dass der kaputte Commit auf der Kommandozeile übergeben wird. Hier ist der rohe Python-Kern des Skripts:
#!/usr/bin/env python
import os
import sys
broken_commit = sys.argv[1]
logmsg = os.popen( "git log --format=%%s %s~1..%s" % ( broken_commit, broken_commit ), 'r' ).read().strip()
os.system( "git commit --message \"fixup! %s\"" % logmsg )
os.system( "git rebase --interactive --autosquash %s~2" % broken_commit )
An dieser Stelle wird mir ein Editor präsentiert, den ich nur noch bestätigen muss ( :wq
in meinem Fall) die angezeigten Änderungen. Wie kann ich diesen letzten Schritt vermeiden? Ich möchte, dass die git rebase
Zeile einfach weitergeht, ohne mir die Möglichkeit zu geben, die angezeigten Schritte zu bearbeiten.
Ich habe gehört, dass man über die Umgebungsvariable EDITOR ein spezielles Skript einstellen kann, um dies zu erreichen. Allerdings verwende ich msysGit auf Windows, so bin ich ein wenig in diesem Bereich begrenzt.