If I have 200 commits that I have pushed with wrong author information in
git config --global user.email and
git config --global user.name. How can I change these commits afterwards in a command without having to go through every one of each?
All commits are of the same author and some commits are between with a different author. So is it possible to iterate over each commit FROM and TO commits and send a
git push --force-with-lease command to update all of these in the history of the master branch?
If they are in a straight line, you could pull it off with a little bit of bash-fu:
git checkout first-commit-to-adjust~ # careful with the pig-tail... it has to be there git log --pretty=%h --reverse HEAD..last-one-to-adjust | while read commit; do git cherry-pick $commit # here we need a check for the author name if [ "$( git show --summary --pretty=%an --quiet )" == "misnamed fulanito de tal" ]; then # yep, it's me git commit --amend --no-edit --reset-author fi done
If you want to only set author name/email (not modifying author date), I think you will have to set values for
GIT_AUTHOR_EMAIL environment variables and then issue the
git commit --amend --no-edit command. Concept does not change…. and if you want to control more things, then there are more environment variables at your disposal to play with. Check
git help commit.
Answered By – eftshift0