git filter-branch --msg-filter to reword a pushed commit message

后端 未结 2 858
予麋鹿
予麋鹿 2020-12-15 06:43

How can I reword the message of an old commit that is already pushed to a private remote? I want to keep the time stamps and tags.

I found this command here:

相关标签:
2条回答
  • 2020-12-15 07:27

    The solution was to escape the slash in "release/..." using a backslash. So the command I used was:

    git filter-branch -f --msg-filter \
    'sed "s/release\/Version-[0-9].[0-9].[0-9]/develop/g"' \
    --tag-name-filter cat -- --all
    
    0 讨论(0)
  • 2020-12-15 07:45

    Here is a slightly improved version which also updates all references to commit hashes in commit messages on the fly when doing filter-branch:

    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
    
    0 讨论(0)
提交回复
热议问题