概要
GitHub のアカウントを複数使っているのだけど、git commit
と git push
で使われるアカウントが違う!
ので修正します。
※ Windows の場合の記事です。Macの場合は資格情報の消し方が異なります。https://support.apple.com/ja-jp/guide/keychain-access/kyca2423/mac からキーチェーンアクセスを削除できます。
ひとつのリポジトリだけに適用される設定です。全体に適用したい場合は他の記事を探してください...。
どんな動作?
VSCode で
You don't have permission to push to (URL). Do you want to fork it instead?
のような通知が出ました。
git push
すると Git ではこんなエラー。
remote: Permission to [使いたいアカウント]/Repo.git denied to [使いたくないアカウント].
fatal: unable to access 'https://github.com/[使いたいアカウント]/Repo.git/': The requested URL returned error: 403
push する際のアカウントが間違っていました。が、git config user.email
に設定されていたのは push する際に使いたいアカウントであり、PGP 鍵も同じアカウントのものを要求されました。
commit するほうのIDで push もしたい
commit するほうのIDを使いたいので、git config -l
で確認できる user.name
と user.email
が正しい場合です。
すること!
- Windows に残っている GitHub の資格情報を消します
-
.git/config
の[remote "..."]
のurl
を書き換えます -
git push
などを行い、資格情報を入れ直します
1. Windows に残っている資格情報の削除
コントロールパネルを開く (Win+R -> Control と入力 -> Enter)
右上の表示が「カテゴリ」なら、「大きいアイコン」にします
ユーザーアカウント をクリックします。
左側に 資格情報の管理 があるのでクリックします。
Windows 資格情報 を押して、
git:https://[アカウント]@github.com
を見つけてすべて削除します。
2. .git/config
を書き換える
push できていないリポジトリのフォルダに移動すると、隠しフォルダで .git
というフォルダがあるので、その中の config
ファイルを開きます。
[remote "[remote名]"]
url = https://github.com/[アカウント]/[リポジトリの名前].git
のようになっていたら、その箇所を以下のように編集します。
[remote "[remote名]"]
url = https://[使いたいアカウント]@github.com/[使いたいアカウント]/[リポジトリの名前].git
[アカウント]@github.com の形式にすればよいです。
例えば
[remote "main"]
url = https://icy9ptcl@github.com/icy9ptcl/GreenBreeze-Light-Theme.git
3. push かなにかしよう
git push
を行うと、再度認証情報を要求されます。Personal Access Token をパスワードの代わりに入力しましょう。
※ Visual Studio Code であればパスワードを入力と表示されますが、Personal Access Token を代わりに入力してください。
Personal Access Token の作り方は以下です。
https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token
push するほうのIDで commit したい?
この場合
git config --local user.name (使いたいアカウントの表示名)
git config --local user.email (使いたいメールアドレス)
をすると、そのとき開いているフォルダが所属するリポジトリ に対して、commit 先のアカウントが変更されます。
※ PGP鍵で認証している場合 user.signingkey
の変更も忘れずに。
もう commit しちゃった
念のため commit のログを見てみましょう。直前のコミットは以下で確認できます。
git log -1 --pretty=full
※ -1 を -2 にすると2つ前までのコミットが確認できます。
Author と Commit が出るはずです。
間違った commit が1回だけの場合
直前の1つの commit は amend = やり直す(修正) することができます。
まずは commit した人(Committer)を変えます。リポジトリのcommit先を変更してから、
git config --local user.name (使いたいアカウントの表示名)
git config --local user.email (使いたいメールアドレス)
直前の Committer を変更します。
git commit --amend
Author (作成者) を変更します。このとき --author=名前 <メールアドレス>
のように指定します。
git commit --amend --author="正しいアカウントの表示名 <メールアドレス>"
修正されたか git log --pretty=full
で確認するのをお忘れなく!
commit が複数回にわたる場合
複数回間違ったアカウントで commit してしまった場合は、
以上の記事を参考にしてください (私ではまだうまく解釈できませんでした...。)