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がもう表示されないか確認)
※本記事内容の無断転載を禁じます。
ご連絡は以下アドレスまでお願いします★
ファイアウォール内部のGradio/WebUIを外部からProxyPassを通して使う
オープンソースリップシンクエンジンSadTalkerをDebianで動かす
ファイアウォール内部のOpenAPI/FastAPIのdocsを外部からProxyPassで呼ぶ
Debian 12でsshからshutdown -h nowしても電源が切れない場合
【Windows&Mac】アプリのフルスクリーンを解除する方法
Debian 12でtsコマンドが見つからないcommand not found
Debian 12でsyslogやauth.logが出力されない場合
Debian 12で固定IPアドレスを使う設定をする
Debian 12 bookwormでNVIDIA RTX4060Ti-OC16GBを動かす
Windows11+WSL2でUbuntuを使う【2】ブリッジ接続+固定IPの設定
【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
【Apache】サーバーに同時接続可能なクライアント数を調整する
【C/C++】小数点以下の切り捨て・切り上げ・四捨五入
GitLabにHTTPS経由でリポジトリをクローン&読み書きを行う
cannot guess build type; you must specify oneと言われた場合
Googleスプレッドシートを編集したら自動で更新日時を入れる
【MinGW】Windowsでgcc/g++コンパイラを使って開発する
ソースからインストールしたPythonの削除方法