Commit-Nachricht für bestimmtes Commit ändern

8

Hinweis: ähnliche Frage wie diese , aber mit einigen wichtigen Änderungen.

Ich habe die folgende Funktion, um das Datum eines Commits neu zu schreiben, mit der Commit-ID:

%Vor%

Ich versuche, eine ähnliche Funktion rewrite-commit-message zu implementieren, um die Commit-Nachricht zu ändern. Was ich will ist:

  1. Die Funktion rewrite-commit-message akzeptiert zwei Parameter: commit_id und new_commit_message
  2. Es ist nicht notwendig, die alte Commit-Nachricht zu kennen: Die Angabe von commit_id reicht aus, um zu wissen, welche Änderung zu bestätigen ist
  3. Nein git commit --amend , da dies mit alten Commits zusammenhängt (nicht unbedingt mit dem letzten Commit)
  4. Keine Sorge, die Historie und den Master-Repo umzuschreiben: Ich arbeite in einem Feature-Zweig, und ich darf git push -f
  5. Ich würde gerne filter-branch dafür verwenden, aber ich weiß nicht, wie ich:
    • Übernehmen Sie die Änderung für ein bestimmtes Commit: Das in der test -Funktion verwendete rewrite-commit-date wird in env-filter verwendet, aber ich werde hier nicht env-filter eingeben, da ich nichts verwandtes ändern möchte in die Commit-Umgebung, aber die Commit-Nachricht.
    • Wie erzwinge ich eine Commit-Nachricht? Das --msg-filter benötigt die ursprüngliche Commit-Nachricht. Die ursprüngliche Commit-Nachricht interessiert mich nicht. Gibt es ein --force-msg-filter oder ähnliches?

Was ich suche ist ähnlich wie dies , aber mit einigen Vorbehalten:

  1. Wenden Sie die Änderung nicht auf eine Reihe von Commits an, sondern auf einen bestimmten Commit
  2. Mir ist die ursprüngliche Commit-Nachricht egal, da ich sie komplett überschreiben möchte
dangonfast 11.08.2016, 09:37
quelle

1 Antwort

2

Dieses kleine Skript funktioniert mit folgenden Einschränkungen:

  1. Dies wird Ihren Verlauf vom Commit an die Spitze des Zweiges umschreiben. Weil Sie in der Frage angegeben haben, dass dies kein Problem ist, qualifiziert sich das.

  2. Ihr Commit ist im Zweig master enthalten. Sie können dies leicht ändern, indem Sie den Branch-Namen als einen anderen Parameter übergeben, aber das commit besser in der Verzweigung ist. Sie sollten wahrscheinlich eine Validierung einbauen, vielleicht mit git rev-parse --abbrev-ref HEAD oder vielleicht git branch --all --contains <commit>

Ohne weitere Umschweife:

%Vor%

Demo

%Vor%
%Vor%
%Vor%
%Vor%
    
Jeff Puckett 16.08.2016, 21:48
quelle