Si aucun filtrage sur commit n'est nécessaire, alors il est préférable d'utiliser rebase que filter-branch :
git rebase -i master --exec 'git commit --amend --no-edit --no-verify -S --reset-author'
Sinon, vous pouvez laisser intacts les commits que vous ne possédez pas.
Définissez l'alias suivant dans ~/.gitconfig
(remplacer your@address.com
avec votre adresse électronique) :
resign = "!_() { : git checkout ; [ \"$#\" -eq 0 ] && echo 'Usage: resign <rev-list>' && exit 2; \
git filter-branch --commit-filter ' \
if [ \"$GIT_COMMITTER_EMAIL\" = \"your@address.com\" ]; then git commit-tree -S \"$@\"; else git commit-tree \"$@\"; fi' $1; }; _"
Alors par exemple, pour résilier tous vos commits dans la branche courante tirée de master, faites :
git resign master..
Crédits pour les réponses précédentes par BarryMode y Roberto Leinardi