githubのレポジトリに初回pushするとき

以前も一度調べて解決したがまたしても同じことを調べてしまったのでメモしとく

githubにて新しいレポジトリを作成してそこにローカルにあるレポジトリをpushしたい場合、基本的にレポジトリ作成時に表示される以下の案内通りやってもうまくいかないことがある。

touch README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/username/hoge.git
git push -u origin master

自分の場合はこれでやったらpushを行った段階で以下のエラーが出た。

error: The requested URL returned error: 403 while accessing https://github.com/username/hoge.git/info/refs 
                                                                                                               
fatal: HTTP request failed                                                                                     

解決方法としては2つ
1.プロトコルsshにする
.git/configにてremoteのurlにあるプロトコルを以下のように書き換える

[remote "origin"]
        url = ssh://git@github.com/username/hoge.git

githubに公開鍵が正しく登録されていればこれでpushできる

2.urlにアカウント名を含める
同じく.git/configにてurl部分を以下のように書き換える

[remote "origin"]
        url = https://username@github.com/username/hoge.git

この状態でpushするとpasswordを聞かれるのでgithubのパスを入力すれば通る
パスを聞かれるのが面倒な場合は.netrcに書いておくことで回避もできる

それについてはこちらのサイトに詳しく書いてある
http://d.hatena.ne.jp/idesaku/20100423/1272015373

ただ、passwordを書いておくのはあまり良くないのでできることならsshを使うのが良さそう


ついでに、githubとのやりとりで通信がうまくいかない場合はこちらに確認方法や解決方法が書かれているのでその通りやっていくのがよい
https://help.github.com/categories/56/articles

▼おまけ
push -uによって.git/configに追跡ブランチの情報が書き込まれるため次回からorigin masterは省略できる。(その際はpushの設定に注意)
cf. http://jsapachehtml.hatenablog.com/entry/2012/07/15/231052

入門Git

入門Git