19

すでにプライベート リモートにプッシュされている古いコミットのメッセージをどのように言い換えることができますか? タイムスタンプとタグを残しておきたい。

ここでこのコマンドを見つけました:

git filter-branch -f --msg-filter \
'sed "s/<old message>/<new message>/g"' -- --all

追加したタグを保持するには:--tag-name-filter cat

コマンド git を実行すると、次のように表示されます: msg filter failed

変更したいメッセージはマージされたメッセージ「マージ ブランチ 'リリース/...'」です。これは問題ですか?

4

2 に答える 2

0

これはわずかに改善されたバージョンであり、フィルターブランチを実行するときにコミットメッセージのコミットハッシュへのすべての参照も更新します:

rm -f /tmp/git;
touch /tmp/git;
git filter-branch \
    --subdirectory-filter <DIRECTORY> \
    --tag-name-filter cat \
    --commit-filter 'echo -n "s/${GIT_COMMIT}/" >>/tmp/git; \
                     NEW=`git_commit_non_empty_tree "$@"`; \
                     echo "${NEW}/g" >> /tmp/git; echo ${NEW}' \
    --msg-filter 'sed -f /tmp/git' \
    -- --all
于 2016-01-13T08:16:44.283 に答える