GitにLocalのアプリケーションをプッシュしようとしたら「fatal: unable to access The requested URL returned error: 403」エラーが出て、解決に割と時間を取られてしまったので、解決方法メモしておきます。
$ git pushのエラー解決
Githubで「Create a new repository」でレポジトリを新規作成
↓
「$ git push -u origin master」コマンドで、Localのアプリケーションをremoteにプッシュしようとする
↓
remote: Permission to abc/abc.git denied to xxx. fatal: unable to access 'https://github.com/xxx/abc/': The requested URL returned error: 403
と出力され、プッシュができない...。
という状況に陥りました。ここからプッシュするためにググりながら色々試します。
「$ git credential fill」でusernameとpassword確認
「$ git credential fill」で、gitにログインしているユーザー情報が正しいのかを確認してみると以下のようにusernameとpasswordを確認することができます。
username=xxx password=yyy
ここで表示されるusernameが期待しているものではなかった(自分の利用している他のgithubアカウントのものだった)ため、「$ git credential reject」でキャッシュされているユーザー情報を消しにかかります。...が、反応がない。そもそもユーザー情報を消せない?
GithubでSSH keysの登録
そういえば、sshキーの設定をしてなかったなと気づき、sshキーの設定をgithub上で行いました。「$ cd ~/.ssh」で.sshディレクトリに移動し、ディレクトリ内のファイルを確認します。
$ ls id_rsa known_hosts id_rsa.pub known_hosts.old
id_rsaがすでに作成されていますが、これは他のgithubアカウントで利用しているものなので、今回の新しいgithubアカウントで利用するsshキーを新規に用意します。
$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (/Users/xxx/.ssh/id_rsa): {ここに新規で登録したいsshキーの名前を入力*1} Enter passphrase (empty for no passphrase): {PCのパスワードを入力} Enter same passphrase again: {PCのパスワードを再度入力}
で新規にsshキーが作成できます。ここで作成できた公開鍵の内容をGithubに登録します。MacOSの場合は、以下のコマンドで作成した公開鍵のファイル内の情報をクリップボードにコピーできます。
pbcopy < ~/.ssh/{新規に作成したsshキーの名前*1}.pub
Key欄にクリップボードにコピーしたファイル情報を貼り付け、登録します。
これでsshキーも登録できたし、gitのユーザー情報も変わってるかな?と期待して「$ ssh -T git@github.com」コマンドで確認すると
$ ssh -T git@github.com Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.
まだ期待するユーザー名になっていません...。プッシュしようとしてもerrorに。
$ git push origin master error: src refspec master does not match any. error: failed to push some refs to 'https://github.com/abc/abc.git'
「~/.ssh/config」の設定
GitHubでssh接続する手順~公開鍵・秘密鍵の生成から~ - Qiita
↑ こちらの記事を参考にして、新しいsshキーを作成した場合には「~/.ssh/config」の設定をする必要があることがわかりました。早速設定していきます。
$ vi ~/.ssh/config # 今回該当しない方のsshキー Host github github.com User git Port 22 HostName github.com IdentityFile ~/.ssh/id_rsa # 新しく作成したsshキー Host github-git User git Port 22 HostName github.com IdentityFile ~/.ssh/id_git_rsa
configファイルの設定ができたら、以下のコマンドでremoteのoriginのURLを確認します。
$ git config remote.origin.url https://github.com/xxx/abc.git
以上のように、今回該当しない方のsshキーでのHostnameが適用されてしまっているので、この設定を「$ git remote set-url origin {Host名}:{ユーザーID}/{リポジトリ}.git」コマンドで書き換えます。(Host名はconfigファイルで設定したHost、ユーザーIDはgithubで登録しているユーザーID、リポジトリは新規作成したリポジトリ名をそれぞれ登録)
$ git remote set-url origin github-git:xxx/abc.git
これで、再度プッシュを試みます。
$ git push -u origin master Counting objects: 341, done. Delta compression using up to 4 threads. Compressing objects: 100% (333/333), done. Writing objects: 100% (341/341), 40.36 KiB | 0 bytes/s, done. Total 341 (delta 207), reused 0 (delta 0) remote: Resolving deltas: 100% (207/207), done. To github-git:/xxx/abc.git * [new branch] master -> master Branch master set up to track remote branch master from origin.
いけたー!
長い戦いでした(´・_・`)
Gitもう少し勉強しよう。
Gitに関しては、こちらの記事も参考にどうぞ。
Gitに関してしっかり学びたい方へ
Gitに関してしっかり学びたいという方向けに、おすすめの本とUdemyのコースを紹介しておきます。
Gitが、おもしろいほどわかる基本の使い方33 改訂新版
Gitに関して基本を学びたい!という方にはこの本がオススメ。Gitに関して個人的には一番理解しやすかったです。
Git: もう怖くないGit!チーム開発で必要なGitを完全マスター
このコースで学べること
- Gitの基礎(データ構造、仕組み)理解
- Gitでのチーム開発の方法と一通りのコマンド
- GitHubを用いたプルリクエスト・レビュー・マージの開発フロー
- ブランチ作成とコンフリクト解消
エンジニアになってチーム開発をするときに99%使うことになるGitとGithubに関して、基本的な使い方と仕組みを理解できるコースです。
仕組みを図解で理解しながら、自分で手を動かしてコマンドを打つことで、GitとGithubの使い方を自分のものにすることができます。
GitとGithubを使ったことがない方はもちろん、なんとなくGitのコマンドを使っているけど改めて仕組みを理解しておきたい方にオススメです。
Git: もう怖くないGit!チーム開発で必要なGitを完全マスター