Githubのプライベートリポジトリをclone, pull, pushなどしたときに、Repository not found
と表示されることがあります。以下のようなメッセージです。
$ git push origin XXXXX
remote: Repository not found.
fatal: repository 'https://github.com/XXXXX/YYYYY.git' not found
SourceTreeやForkなどのGUIツールでも発生することがあります。
原因は?
プライベートリポジトリへのアクセス認証に失敗しているためです。gitの接続プロトコルを https にしているのが原因のことが多いです。githubから普通にcloneすると大体 https になっているのですが、仕事とプライベートで複数のgitアカウントを切り替えて使っていると、いつのまにかgithubの認証情報が切り替わって、アクセスできなくなるようです。
対応
gitへの接続プロトコルを ssh にすれば解決します。
①接続プロトコルを確認
remote.origin.url が https になっているかを確認しましょう。
$ git config -l | grep remote.origin.url
remote.origin.url=https〜 # httpsから始まるURLがセットされているか
もしgit@から始まる値がセットされている場合には、この記事は役に立ちませんので、別の記事を参考にしてください。
②リモートURLをSSHのパスに書き換え
git remote set-url origin [リポジトリのSSHパス]
git remote set-url origin git@github.com:xxx/abc.git # 例
SSHパスは、以下の画面よりコピーすると簡単です。
実行後、もう一度 git config -l
をして、remote.origin.url が git@ で始まるSSHパスに変わっているかを確認しておきましょう。
③公開鍵をgithubに登録
自分のローカルマシンの公開鍵をgithubのアカウントに登録します。(既に登録済の場合はスキップして構いません。)
まず自分の公開鍵をクリップボードにコピーします。Macの場合は以下のコマンドでコピーできます。
$ pbcopy < ~/.ssh/id_rsa.pub
次に以下のURLを開きましょう。
「New SSH Key」を押して、コピーされた鍵を貼り付けたあと、「Add SSH key」すれば完了です。※[title]欄 には自分のマシンだとわかる名前をつけておくと良いでしょう。
これで、git pull / push が問題なく出来るようになっているはずです。