いくつかのオプションがあります。
コミットメッセージの一括書き換え
git filter branchを使用して、コミットメッセージを書き直すことができます。
たとえば、最後の10個のコミット(いずれもマージではない)にAcked-by行を追加する必要がある場合は、次のコマンドを使用します。
git filter-branch --msg-filter '
cat &&
echo "Acked-by: Bugs Bunny <bunny@bugzilla.org>"
' HEAD~10..HEAD
30のコミットメッセージの手動編集
編集モードを選択することで、git rebase Interactiveを使用して、コミットメッセージを書き換えることができます
git rebase -i HEAD~30
edit f7f3f6d changed my name a bit
edit 310154e updated README formatting and added blame
edit a5f4a0d added cat-file
...
それで
git commit -v --amend
<editor launched, edit commit message>
git rebase --continue
git commit -v --amend
<editor launched, edit commit message>
git rebase --continue
git commit -v --amend
<editor launched, edit commit message>
git rebase --continue
....
すべてを1つのコミットに押しつぶします
git rebaseを使用して、エバーシングを1つのコミットに押しつぶし、ワークロードを制限することもできます
git rebase -i HEAD~30
pick f7f3f6d changed my name a bit
squash 310154e updated README formatting and added blame
squash a5f4a0d added cat-file
...
<editor launched, edit the combined commit message>
プロアクティブな自動化
これを定期的に行う必要がある場合は、prepare commit mesgフックを使用して、コミットメッセージの形式に一貫性を追加できます。
gitとは異なり、svnのpre-commitフックをスキップすることはできないことに注意してください(少なくとも組み込みのメカニズムでは)。そのためgit commit -va --no-verify
、次に実行するときに、次のようなことを試みても効果はありませgit svn dcommit
ん。すべて失敗します。同じです(もちろん失敗するものがある場合)。