Gitの「The requested URL returned error: 403」の対処法!

この記事では、Gitの「The requested URL returned error: 403」の対処法を紹介します。「The requested URL returned error: 403」というエラーにより、pushやcloneができない場合を解決しましょう!

コンテンツ [表示]

  1. 1Gitでpushした際に「The requested URL returned error: 403」が発生
  2. 2「The requested URL returned error: 403」の対処法
  3. 2.1ユーザー名とメールアドレスを登録していなかった場合の「The requested URL returned error: 403」
  4. 2.21台のPCで複数のgitアカウントを使用している場合の「The requested URL returned error: 403」

Gitでpushした際に「The requested URL returned error: 403」が発生

Gitでpushやcloneしようとすると、このようなエラーが出てpushやcloneができないことがあります。

エラーメッセージ

remote: Permission to <ユーザ名>/<リポジトリ名>.git denied to
fatal: unable to access 'https://github.com/<ユーザ名>/<リポジトリ名>.git/': The requested URL returned error: 403

pushしようとした時や、cloneしようとしたときに出るエラーで、「アクセス権がない」ことを表しています。

「The requested URL returned error: 403」の対処法

ユーザー名とメールアドレスを登録していなかった場合の「The requested URL returned error: 403」

自分のアカウントのユーザー名とメールアドレスが登録されていないと、リポジトリへのアクセス権限がありません。
登録されているかどうかは、gitconfigという設定ファイルの中身を見ることで確認できます。
この中身を確認するには、git config -l(またはgit config -list)というコマンドを使います。

gitconfigの中身を確認

$git config -l

登録されているとこのように表示される

...
user.email=<メールアドレス>
user.name=<ユーザー名>
...

もしユーザー名とメールアドレスが表示されない場合は登録されていないので、以下のようにして登録します。

ユーザー名とメールアドレスを登録する

git config --global user.name "<ユーザー名>"
git config --global user.email "<メールアドレス>"

そして、pushやcloneする際のURLにもユーザー名とメールアドレスとパスワードを含む必要があります。

例:cloneする場合

$git clone https://{<ユーザ名>}:{<パスワード>}@github.com/<ユーザ名>/<リポジトリ名>.git

上記の手順で解決することができます!

1台のPCで複数のgitアカウントを使用している場合の「The requested URL returned error: 403」

1台のPCで複数のアカウントを使用している場合、意図していない方のアカウントを使用する設定になっていて、アクセス権限がなくなっていることがあります。

この場合の対処法はいくつかありますが、今回はリポジトリごとに使用するアカウントを切り替える方法を紹介します。

例えばデフォルトでは会社のアカウント、「個人のプロジェクト」を管理しているリポジトリにいるときには個人のアカウントを使用するように切り替える...などの方法です。

前述のように、アカウントの情報はgitconfigで管理されています。この中身を書き換えていきます。

まずはエディターでglobalのgitconfigを開きます。(場所は ~/.gitconfig)

gitconfigの中身(例)

[user]
          name=<ユーザー名>
          email=<メールアドレス>

アカウントが登録されている場合は、このような内容が表示されているはずです。現在これがデフォルトで使用されるgitアカウントになっています。
この下に、以下のような内容を書き加えます。

特定のリポジトリでは、別のgitconfigを使用するように指定する

[includeIf "gitdir: <特定のリポジトリ(ディレクトリ)のパス>"]
  path = ~/<ファイル名>

includeIfというのは、gitconfigで使用できる場合分けだと思ってください。
「<特定のリポジトリ(ディレクトリ)のパス>の位置にいる時には、gitconfigではなく<ファイル名>というファイルの設定を適応させる」という内容です。
例えばこのように書きます。

記述例

[includeIf "gitdir:~/Desktop/qumeru"]
      path = ~/.gitconfig_qumeru

次に、先程指定した名前のファイルを作成し、その中には以下のように記述します。

2つめのgitconfig

[user]
        name = <ユーザー名>
        email = <メールアドレス>

ここでは、先程指定したリポジトリで使用したいgitアカウントを記述します。gitconfigに書いてあるものとgitconfig_2で違うアカウントを指定することで、特定のリポジトリにいる間だけ別のアカウントを使用してpushやcloneを行うことができます!

GeekHive採用サイト

関連記事