私には、もともと SVN からインポートされた、1000 のコミットを含むかなり大きな Git リポジトリがあります。リポジトリを公開する前に、新しいリポジトリで意味をなさない数百のコミット メッセージをクリーンアップし、追加された git-svn 情報テキストをすべて削除したいと思います。
'git rebase -i' と 'git commit --amend' を使用して個々のコミット メッセージを編集できることはわかっていますが、編集するメッセージが数百もある場合、それは非常に面倒です。
これらすべてのコミット メッセージをもっと速く編集する方法はありますか? 理想的には、すべてのコミット メッセージを 1 つのファイルにリストし、1 か所ですべて編集できるようにします。
ありがとう!
ベストアンサー1
それは古い質問ですが、 については何も言及されていないのでgit filter-branch
、私の意見を述べさせていただきます。
最近、コミットメッセージのテキストを一括置換する必要がありました。コミットメッセージの残りの部分は変更せずに、テキストブロックを別のテキストブロックに置き換えました。たとえば、参照: #xxxxxと参照: #22917。
私はgit filter-branch
このように使いました
git filter-branch --msg-filter 'sed "s/Refs: #xxxxx/Refs: #22917/g"' master..my_branch
--msg-filter
コミット メッセージのみを編集するオプションを使用しましたが、他のフィルターを使用してファイルを変更したり、完全なコミット情報を編集したりすることもできます。filter-branch
私はこれをマスター()にないコミットにのみ適用するように制限しましたmaster..my_branch
が、コミットの範囲を省略することでブランチ全体に適用できます。
ドキュメントで提案されているように、ブランチのコピーでこれを試してください。お役に立てば幸いです。
回答に使用した情報源
- 関数を使用するタイミングの例:https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#The-Nuclear-Option:-filter-branch
- 関数リファレンス(オプションのリスト付き):git フィルターブランチ
- 書き直しの例:https://davidwalsh.name/git-commit-messages を更新します