git でメールアドレスやら名前やらを間違えて commit してしまったときの修正方法
- id:naga_sawa:20110119:1295420861 git でメールアドレスやら名前やらを間違えて commit してしまったときの修正方法 - ..たれろぐ..
しかしStack Overflowで紹介されていた git-filter-branch(1)
ベースの手法の方が楽だった.
- http://stackoverflow.com/questions/750172 version control - How do I change the author of a commit in git? - Stack Overflow
対象commit範囲 (eg. HEAD~10..HEAD
) を全て特定のauthor名に書き換えたいとき(ワンライナー):
git filter-branch -f --env-filter "GIT_AUTHOR_NAME='Newname'; GIT_AUTHOR_EMAIL='newemail'; GIT_COMMITTER_NAME='Newname'; GIT_COMMITTER_EMAIL='newemail';" HEAD~10..HEAD
対象commit範囲のうち,元となるauthor名が特定の値のときだけ書き換えたいとき:
git filter-branch --commit-filter ' if [ "$GIT_COMMITTER_NAME" = "<Old Name>" ]; then GIT_COMMITTER_NAME="<New Name>"; GIT_AUTHOR_NAME="<New Name>"; GIT_COMMITTER_EMAIL="<New Email>"; GIT_AUTHOR_EMAIL="<New Email>"; git commit-tree "$@"; else git commit-tree "$@"; fi' HEAD~10..HEAD
使える環境変数は git-commit-tree(1)
を見ろ,とあるね:
- http://www.kernel.org/pub/software/scm/git/docs/git-commit-tree.html git-commit-tree(1) Manual Page
例えばGithubでは,commit内に登録済みのauthor名があるとリンクを付けてくれるので,author名はきちんと揃えた方が得である.うっかりローカルマシン上のアカウント名(≠Githubのアカウント名)のままcommitを続けてしまった後にこの技が役立った.