2013-10-28 15 views
7

Jak mogę zmienić treść wiadomości o starym zatwierdzeniu, które zostało już przekazane do prywatnego pilota? Chcę zachować znaczniki czasu i znaczniki.git filter-branch --msg-filter do zmiany wiadomości pushed commit

znalazłem tego polecenia here:

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

W celu utrzymania tagów dodałem: --tag-name-filter cat

Podczas wykonywania git polecenia mówi mi: filtr msg udało

Komunikat chcę do zmiany jest komunikat "scalanie wydania/..." "Czy to jest problem?

+0

Scripting git rebase - i jest inna opcja: http://stackoverflow.com/questions/12394166/how-do-i-run-git-rebase-interactive-in-non-interactive-manner – MarcH

Odpowiedz

11

Rozwiązaniem było uciec z ukośnika w "release/..." za pomocą odwrotnego ukośnika. Więc komenda Kiedyś było:

git filter-branch -f --msg-filter \ 
'sed "s/release\/Version-[0-9].[0-9].[0-9]/develop/g"' \ 
--tag-name-filter cat -- --all 
1

Oto nieznacznie poprawiła wersję, która aktualizuje również wszystkie odwołania do popełnienia mieszań w popełnić wiadomości w locie, gdy robi 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 "[email protected]"`; \ 
        echo "${NEW}/g" >> /tmp/git; echo ${NEW}' \ 
    --msg-filter 'sed -f /tmp/git' \ 
    -- --all