gitでcommit logのauthorを変更する

[`evernote` not found]
Bookmark this on Hatena Bookmark
Share on Facebook
LINEで送る

ずっとローカルで管理してたソースを,github とかで公開する時にgithubのアカウントと同じauthorにして,commit logにアイコンを出したりする時に使える.
手順は以下の通り.

  1. gitのconfigを変更.
    変更後のユーザ名をaaaaaaaとする.

    [user]
        name = aaaaaaa
        email = aaaaaaa@users.noreply.github.com
    
  2. ローカルリポジトリを一括修正
    参照:Authorの名称をGitHubと同じにする - Qiita

    $ git filter-branch -f --env-filter "GIT_AUTHOR_NAME='aaaaaaa'; GIT_AUTHOR_EMAIL='aaaaaaa@users.noreply.github.com'; GIT_COMMITTER_NAME='aaaaaaa'; GIT_COMMITTER_EMAIL='aaaaaaa@users.noreply.github.com';" HEAD
    

    ちなみに,コントリビュータが複数人いて,それぞれがgithubのアドレスとかにする場合は,if文を使う.
    if文は,Git - 歴史の書き換え
    の最後の例を参照のこと.

  3. リモートリポジトリを作り直す(←Qiitaの方法(push -f)では,リモートリポジトリにrejectされるわ,そのエラーに従いpullしたら全部のログが二重になるわ,悲惨な目にあった)
    ちなみに,重複するcommit logの削除コマンドも,以前探した時にはあった気がするが,面倒くさいので,最後にmergeしてしまったツリーから,pullする直前のコミットにcheckoutして,そこからブランチをフォーク,masterを削除,forkしたものをマスターに再フォーク,フォークしたブランチを削除,とすればフィルターを駆使して頑張らなくても戻せる.
    git的に正しいとは思わないけど,手っ取り早い.