ずっとローカルで管理してたソースを,github とかで公開する時にgithubのアカウントと同じauthorにして,commit logにアイコンを出したりする時に使える.
手順は以下の通り.
- gitのconfigを変更.
変更後のユーザ名をaaaaaaaとする.[user] name = aaaaaaa email = aaaaaaa@users.noreply.github.com
- ローカルリポジトリを一括修正
参照: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 - 歴史の書き換え
の最後の例を参照のこと. - リモートリポジトリを作り直す(←Qiitaの方法(push -f)では,リモートリポジトリにrejectされるわ,そのエラーに従いpullしたら全部のログが二重になるわ,悲惨な目にあった)
ちなみに,重複するcommit logの削除コマンドも,以前探した時にはあった気がするが,面倒くさいので,最後にmergeしてしまったツリーから,pullする直前のコミットにcheckoutして,そこからブランチをフォーク,masterを削除,forkしたものをマスターに再フォーク,フォークしたブランチを削除,とすればフィルターを駆使して頑張らなくても戻せる.
git的に正しいとは思わないけど,手っ取り早い.