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

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


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


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