概要
- githubの個人リポジトリでコミットした中に個人メアドが含まれている事に気が付いたので、ダミーメアドに書き換えたいなーと思って試行錯誤。
- 個人のリポジトリなら良いけど、チームとか複数人で使ってるリポジトリでは絶対にやらない方が良い。
- リモートへ適用する場合は責任をもってくれぐれも慎重に。
やった事
- githubの用意してくれるダミーアドレスを取得
- 変更したいリポジトリをローカルにclone
- 過去のコミットログのAutherとEmailをごっそり書き換える
- 強制Pushで上書き
- ローカルgit設定のメアドをダミーに変える
githubの用意してくれるダミーアドレスを取得
Keep my email address private. で発行されるメアドをコピーしておく
${githubID}@users.noreply.github.com
みたいなアドレス。以下 ${ダミーメアド}
- 同じ画面で
Block command line pushes that expose my email.
を設定すると、ダミーメアド以外のメアドがコミットログにあると githubへPushできなくなるっぽい。 - 後でPushできなくなってハマっても面倒なので忘れないうちに以下でローカルgit設定のメアドをダミーメアドに変更して置く。
- https://help.github.com/ja/articles/setting-your-commit-email-address を参考に設定
git config global user.email ${ダミーメアド}
メアドを変更したいリポジトリをローカルにclone
clone ${リポジトリ} ${ディレクトリ}
# 転ばぬ先のバックアップとして、違うディレクトリ名でも同じリポジトリをcloneしておくと安全
clone ${リポジトリ} ${ディレクトリ}.bkup
過去のコミットログの情報をごっそり書き換える
cloneしたディレクトリへ cdしコミットログの状態を確認
git log
githubでコピーしたダミーメアドを下記のコマンドで上書き設定する
git filter-branch -f --env-filter \
"GIT_AUTHOR_NAME='${変更後のAUTHER_NAME}'; \
GIT_AUTHOR_EMAIL='${ダミーメアド}'; \
GIT_COMMITTER_NAME='${変更後のCOMMITTER_NAME}'; \
GIT_COMMITTER_EMAIL='${ダミーメアド}';" \
HEAD
書き変わったか確認
git log
強制Pushで上書き
git push -f remote origin
やっちまったなーという時は、バックアップしてあれば
バックアップしたディレクトリに移って手を加えずにoriginへ強制Pushすれば作業前の状態に戻せるとは思うけど慎重に作業する。