git push時に403エラーが返ってくる際の対処法

gitでプロジェクトを管理する際、ローカルリポジトリに変更を加えてテストを行い、
上手くいくことを確認できれば、リモードのリポジトリにpushすると思います。

しかし、pushの際に403エラーが返ってきてしまうことが最近起きましたので、
その対処法についてメモしていきます。

 

遭遇したエラー

ローカルのリポジトリに変更を加え、
git add, git commitを済ませ、最後にリモートリポジトリにプッシュすると思います。

すると、このようなエラーメッセージが表示されることがありました。

https://github.com/user/repo/リクエストの返答が403エラーとなっています。

 

問題の原因

これは、

  • 1台のPCで複数のgitアカウントのリポジトリを管理していたこと
  • Mac OS X を使用していたこと

が原因でした。

 

通常、git pushを行う際には以下のようにユーザ名とパスワードの入力が求められます。

 

実際、ubuntuではこのように毎回ユーザ名とパスワードの入力が行われますが、
Mac OSに備え付けられたgitの場合、キーチェーンアクセスというパスワードを記憶してくれるアプリケーションが自動でパスワードを入力してくれるため、パスワードの入力を省くことができます。

そして、Mac OSのPCにて、普段使用しているgitアカウントとは別のアカウントを使用すると403エラーが起きるというわけなのです。

 

例えば、普段使用しているgitアカウントをA、別のgitアカウントをBとすると、
Bのアカウントのリポジトリにpushしたいのに、Mac OS備え付けのgitが勝手に保存されているAのアカウントのユーザ名とパスワードを送信してしまっている。という状況が生じているわけです。

 

403エラーの対処法

そこで、一時的にgitアカウントBのリポジトリにpushしたい場合には、
MacのキーチェーンアクセスからgitアカウントAのパスワード情報を削除してしまいます。

キーチェーンアクセスは、Mac OSのアプリケーション一覧から探すことができます。

 

キーチェーンアクセスを起動すると、以下のような画面となりますので、
右上の検索窓にgitと入力して検索をかけます。

検索をかけたら、該当するgithub.comのログインパスワードを消去します。

 

消去したら、もう一度git pushを行います。

すると、今度は403のhttpリクエストエラーではなく、
ユーザ名とパスワードの入力が求められると思います。

そこに正しいユーザ名とパスワードを入力すれば、無事Bのgitアカウントにpushできていると思います。

 

また、Aのgitアカウントに戻したい場合は、再度キーチェーンアクセスのログインパスワードを消去すれば良いですね。

 

以上となります。