2024-10-09
特に初期設定せず、何も考えずにレンタルサーバーなどで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> Commit: myprivatename <myprivatename> スペルミス修正 commit d36d695e005542391d09f897910c3297bb32cef7 Author: myprivatename <myprivatename> Commit: myprivatename <myprivatename> copy initial files </myprivatename></myprivatename></myprivatename></myprivatename>
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> Commit: mypublicname <mypublicname> スペルミス修正 commit d36d695e005542391d09f897910c3297bb32cef7 Author: mypublicname <mypublicname> Commit: mypublicname <mypublicname> copy initial files </mypublicname></mypublicname></mypublicname></mypublicname>
見られてもよい名前・メールに直っているのが確認できたので、リモートリポジトリ=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がもう表示されないか確認)
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
Intel Macbook2020にBootCampで入れたWindows11 Pro 23H2のBluetoothを復活させる
Windowsのデスクトップ画面をそのまま配信するための下準備
WindowsでGPUの状態を確認するには(ASUS系監視ソフトの自動起動を停止する)
CORESERVER v1プランからさくらインターネットスタンダートプランへ引っ越しメモ
さくらインターネットでPython MecabをCGIから使う
さくらインターネットのPHPでAnalytics-G4 APIを使う
インクルードパスの調べ方
【Git】特定ファイルを除外する.gitignore
【Ubuntu/Debian】NVIDIA関係のドライバを自動アップデートさせない
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Windows版Google Driveが使用中と言われアンインストールできない場合
【Apache】サーバーに同時接続可能なクライアント数を調整する
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
Windows11でMacのキーボードを使うには
cannot guess build type; you must specify oneと言われた場合
Pythonで処理にかかった時間を計測するには
【ひかり電話+VoIPアダプタ】LANしか通ってない環境でアナログ電話とFAXを使う