Unterdrücke die Vorlage für Commit-Nachrichten mit `git merge --squash` oder` --no-commit`

2

Bei Verwendung git mergemit einer Option, die das automatische Festschreiben ( --no-commitoder --squash) unterdrückt , wird gitanscheinend immer eine eigene Vorlage für die nächste Festschreibungsnachricht generiert. der nächste git commitignoriert die -tOption. Gibt es sowieso, um dies zu unterdrücken?

Die beste Problemumgehung, die ich gefunden habe, besteht darin, sie -mmit dem Commit zu verwenden und dann sofort auszuführen git commit --amend. Dies scheint mir jedoch umständlich zu sein und verhindert, dass die Übergabe abgebrochen werden kann, indem die Übergabemeldungsvorlage vor dem Speichern gelöscht wird.

Kyle Strand
quelle

Antworten:

3

Wenn Sie den Inhalt inspiziert .gitVerzeichnis nach tun git merge --squashwürden Sie sehen , SQUASH_MSGDatei , die eine enthält Nachrichtenvorlage begehen. Diese Datei wird auch nach einem Squash mit erstellt git rebase -i. Sie müssen diese Datei entfernen, wenn Git die Commit-Nachricht dabei nicht automatisch ausfüllen soll git commit. Wenn es nützlich wäre, einen nativen git commitBefehl als Alias zu verwenden, um dies automatisch für Sie zu tun, ist dies mit Git jedoch nicht möglich . Stattdessen sollten wir einen Alias ​​wie diesen erstellen ~/.gitconfig:

[alias]
         kommit = "!KOMIT_GIT_DIR=$(git rev-parse --git-dir); if [ -a "${KOMIT_GIT_DIR}/SQUASH_MSG" ] ; then rm "${KOMIT_GIT_DIR}/SQUASH_MSG" ; fi && git commit"

Diese Zeile prüft, ob SQUASH_MSG existiert und entfernt, falls dies der Fall ist git commit. Jetzt solltest du git komitstatt git commitnach dem Aufführen tun git merge --squash.

Ich habe das mit Git 2.3.1 getestet:

$ git --version
git version 2.3.1
Arkadiusz Drabczyk
quelle
1
Genial. Eigentlich wollte ich, dass dies Teil eines umfangreicheren Alias ​​ist, das ich ohnehin schreibe, also macht es mir nichts aus, dass Sie kein Alias ​​über sich commitselbst erstellen können . Ich werde Sie wissen lassen, ob dies für meine Version ( 1.7.10.4) funktioniert .
Kyle Strand
Beachten Sie, dass Ihre Anführungszeichen für Variablen maskiert werden sollten ...
Kyle Strand
Ja, SQUASH_MSGgenau das wollte ich. Am Ende habe ich nur mit meiner bevorzugten Vorlage darüber geschrieben, anstatt sie zu löschen.
Kyle Strand