.gitconfig に設定した user.name を間違えたままコミットしたものを直す(歴史改変力が強いためマージ前限定技)

Kyoto "Mensho Nakamatsu" Tsuke men

特定のリポジトリで適用したいユーザ名があって、global の .gitconfig ではなく local の .gitconfig にユーザ名を設定していると、設定した名前が間違っていたということがたまによくある。

$ git config --local --list
user.name=tomoyashibata # => tomoya が正しいのにうっかりフルネームにしてしまった

すでにマージしてしまったコミットや、自分以外の複数人とで共同で作業しているブランチについては過去改変が激しいので適用することが難しいが、そうでなければ以下の技を発動することで過去をなかったことにすることができる。

# local の .gitconfig の user.name を修正
$ git config --local user.name "tomoya"

# --amend で、コミットの変更をする
# --reset-author で、author を .gitconfig に従ってリセットする。歴史は改変され別のコミットが作り直されるのでコミット日時なども変わる
# --no-edit で、コミットメッセージの編集を行わないことを指定する
$ git commit --amend --reset-author --no-edit

あとは力強いプッシュをして世界を騙せばよい。

$ git push origin [ブランチ名] --force