GitHubのログインパスワード変更による、Gitからのリモートリポジトリへプッシュできなくなる事象の対処法 〜osxkeychain版〜
個人的な覚書です
環境
事象
いつもどおりローカルでGitのステージング、コミット、プッシュを行った。そうしたらプッシュ時にエラーがでた。ターミナル出力は下記の通り。リポジトリ名等は一部hogeなどとボカしてます。
MyMacBookAir:hoge-project swchrm$ git push -u origin master remote: Invalid username or password. fatal: Authentication failed for 'https://github.com/hoge/hoge-project.git/'
原因
GitHubのパスワードを変更したことで、ローカルに保存してあるGitHubアカウントのパスワードと実際のパスワードが食い違ってしまっているため。
対処法
osxkeychainで保存されている認証情報内のパスワード欄を更新します。
MacOS標準搭載のキーチェーンアクセスアプリで、GitHubの項目からパスワードを変更します。変更後にプッシュ成功すればOK。自分は変更後一回目のプッシュでusernameとパスワードを聞かれたけど、2回目以降は聞かれなかった。
osxkeychainの情報が反映されているのか確認したかったらgit credential fill
コマンドで確認すると確実。
補足
自分の認証情報を閲覧する
git credential fill
コマンドの詳細は下部の参考文献の1件目にある。コマンドを実行するとプロトコルとホスト名を入力。一行空白をおき実行。そのあと、ユーザー名とパスワードを聞かれるので、入力すると以下の情報が得られる。
MyMacBookAir:.git swchrm$ git credential fill protocol=https host=github.com Username for 'https://github.com':hoge Password for 'https://hoge@github.com': protocol=https host=github.com username=hoge password=hogehoge
自分が利用できるhelperを確認する
git help -a | grep credential
で確認可能。
確認結果は以下。
MyMacBookAir:.git hoge$ git help -a | grep credential credential remote-ext credential-cache remote-fd credential-cache--daemon remote-ftp credential-osxkeychain remote-ftps credential-store remote-http
複数helper利用時
認証情報の保存は複数のhelperで行われる様子。複数のhelperを利用している場合はどのhelperに保存されている情報が優先で適用されるのかを確認する必要がありそう。今回は自分がキーチェーンアクセスのみなのでここでの紹介はありません。
所感
git credential fill
で自分の認証情報を閲覧できるけども、これがどの方式で保存されているか分からない。Gitの認証情報保存方法はいくつかあるということで、自分の保存方法が何かを確認するのに少し手間取ってしまった。