アプリケーション開発ポータルサイト
ServerNote.NET
ServerNote.NET厳選キャンペーン・クーポンはこちら!
カテゴリー【Git/GitHub
【Git】間違ったユーザー名/Emailでcommit/pushしてしまったものを過去に遡って全変更する
POSTED BY
2022-10-10

特に初期設定せず、何も考えずにレンタルサーバーなどでGitHubにcommit/pushすると、コミットしたユーザー名・Emailアドレスが意図せず流出してしまう危険性がある。git commit,pushで、GitHubのリモートリポジトリがpublicだった場合、誰がコミットしたのか見ればわかる。これを見られても問題ない名前にしっかり設定しておかないと、ローカルマシン内部で設定しているユーザー名・Emailがそのままここに表示されてしまう。

これは、ローカルマシンを使い始めの時にgit config --globalをし忘れたために起こるが、もうすでに意図しないユーザー名でcommit/pushしてしまったのが判明した場合、正しいものに過去を含めてすべて修正・pushし直さなければならない。その方法が以下。

1、まずgit configで公開しても良い正しいユーザー名/emailを設定する

ここで設定した値がGitHubでグローバルに公開されるわけだから、見られても良いものに設定する。

git config --global user.name mypublicname
git config --global user.email mypublicname@example1155.jp
cat ~/.gitconfig #確認

2、間違ったユーザー名でAuthor/Committerしてしまっているか確認する

.gitディレクトリが存在する対象リポジトリディレクトリに移動し、以下コマンドでログを確認する

cd my_public_repo

git log --pretty=full
commit 1674da875ec9f521453ca923aefff0dc7a57ede0
Author: myprivatename <myprivatename@example1155private.jp>
Commit: myprivatename <myprivatename@example1155private.jp>

    スペルミス修正

commit d36d695e005542391d09f897910c3297bb32cef7
Author: myprivatename <myprivatename@example1155private.jp>
Commit: myprivatename <myprivatename@example1155private.jp>

    copy initial files

myprivatename(例)という公開してはならないプライベートな名前とメールアドレスでコミットしてしまっていることを確認。pushしてしまっているなら、すでにGitHubでグローバルに公開されてしまっているので危険。これを全部修正する。

3、公開してもよい情報で過去も含めてコミット情報を上書きする

mypublicname, mypublicname@example1155.jpに一気に直す。

cd my_public_repo

git filter-branch -f --env-filter "GIT_AUTHOR_NAME='mypublicname'; GIT_AUTHOR_EMAIL='mypublicname@example1155.jp'; GIT_COMMITTER_NAME='mypublicname'; GIT_COMMITTER_EMAIL='mypublicname@example1155.jp';" HEAD

Rewrite 14371c71696b9330292beec785a02ba36c9209b0 (2/2)
Ref 'refs/heads/master' was rewritten

4、書き換わっているか再び確認し、GitHubに強制pushする

cd my_public_repo

git log --pretty=full
commit 1674da875ec9f521453ca923aefff0dc7a57ede0
Author: mypublicname <mypublicname@example1155.jp>
Commit: mypublicname <mypublicname@example1155.jp>

    スペルミス修正

commit d36d695e005542391d09f897910c3297bb32cef7
Author: mypublicname <mypublicname@example1155.jp>
Commit: mypublicname <mypublicname@example1155.jp>

    copy initial files

見られてもよい名前・メールに直っているのが確認できたので、リモートリポジトリ=GitHubに強制的にpushして反映する。

git push -f origin master

Counting objects: 202, done.
Delta compression using up to 56 threads.
Compressing objects: 100% (153/153), done.
Writing objects: 100% (202/202), 174.58 KiB | 0 bytes/s, done.
Total 202 (delta 47), reused 0 (delta 0)
remote: Resolving deltas: 100% (47/47), done.

To git@github.com:mypublicname/my_public_repo.git
 + 14371c7...1674da8 master -> master (forced update)

強制更新できたので、GitHubサイトで、committed 1 hour agoなどの情報があるリンクを見て、上記公開ユーザー名にちゃんと書き換わっているか確認する。(旧myprivatenameがもう表示されないか確認)

全国対応!水道直結型の【楽水ウォーターサーバー】Purest設置台数No1
新時代の水道直結型ウォーターサーバー【Purest】 ダイオーズジャパンの正規代理店。Purest設置台数は全国代...READ MORE
おしゃれプレママに話題のマタニティ服・授乳服CHOCOA【チョコア】
妊娠前と変わらないオシャレが楽しめる。 ありそうでなかった、おしゃれマタニティ服と授乳服を日本全国のプ...READ MORE
GMOクラウド ALTUS(アルタス)Basicシリーズ 「国内最安級500円」のミニサーバー 
GMOクラウド ALTUSは、 お客さまの導入目的や予算に合わせて、 2つのクラウドサーバーをご用意しています。...READ MORE
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【webmaster/管理人】
自営業プログラマー
ご連絡は以下アドレスまで★

☆ServerNote.NETショッピング↓
ShoppingNote
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】