そんなにいないかもしれないけど、プロダクトごとにいくつかのハンドルを使い分けている人は、gitプロジェクトごとに
git config --add user.name USER_NAME_FOR_THIS_PROJECT git config --add user.email USER_EMAIL@FOR_THIS_PROJECT
とかやって、globalなユーザ名/メールアドレスと異なる個別の設定をしてることと思います。
で、プロジェクト作るときにこれをやってからコミットし始めれば良いんですが、既にいくつかglobalなユーザ名でコミットしてしまっている場合には、それらを書き換えたいですよね。
そういう場合は、
git rebase -i 書き換えたいコミットログ範囲の先頭コミットを指定(HEAD^とかHEAD~3とかkc3832kDとか) git commit --amend --author=USER_NAME_FOR_THIS_PROJECT git rebase --continue ....commitとrebase --continueを、指定したコミット範囲の分だけ繰り返す
のように実行すれば、順繰りとユーザ名を変更していけます。(もっと良い方法があるかもしれません)
ただし歴史改変にあたるので、既にgithubなどの公開リポジトリにpush済みであればもう一度公開リポジトリを作り直して、一からpushするなどをしないとだめですね。
あと、初期コミット直後にやろうとすると、新しいユーザ名が認識されずエラーになってしまいました。
$ git log commit aaC0a88a2a6FBd93D0k081iDD3aDaa6774BAD1F1 author: nobeans <nobeans@example.com> Date: Thu Oct 8 09:59:35 2009 +0900 initial import $ git config --add user.name NEW_USER_NAME $ git config --add user.email NEW_USER@example.com $ git config --list user.name=nobeans user.email=nobeans@example.com ...(snip)... user.name=NEW_USER_NAME user.email=NEW_USER@example.com $ git ci --amend --author=NEW_USER_NAME fatal: No existing author found with 'NEW_USER_NAME'
で、結局ちょっとどうよという感じではありますが、以下の方法で回避できました。
- 一時ブランチを作る
- ファイルを1つ適当に編集して、コミットする
- これで新しいユーザ名がgitに認識されたことになる!??
- 元のブランチに戻って、"git commit --amend --author=NEW_USER_NAME"を実行する
- 成功する
- 一時ブランチを削除する
こういうものなんでしょうかね。