GitHubへのpushでエラー
最近 GitとGitHub をやり始めた。GitHubにアカウントをつくり、初めてpushしようとしたら以下のようなメッセージが。
! [rejected] master -> master (fetch first)
error: failed to push some refs to ‘https://github.com/WakkyFree/binarycutter’
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushin
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., ‘git pull …’) before pushing again.
hint: See the ‘Note about fast-forwards’ in ‘git push –help’ for details.
解決法を調べてみる
調べたら、以下のページに解説が。さすが俺達のStackOverflow。
Issue pushing new code in Github
http://stackoverflow.com/questions/20939648/issue-pushing-new-code-in-github
githubにレポジトリを作ったとき、案内にしたがってReadme.mdを作成した操作がcommitとして扱われているらしい。localではそのcommitが反映されてないので、まず最新版をfetchしてね、といわれているっぽい。
素直にfetchしてみる
上のページの回答どおり git pullを実行してもいいけど、fetchしろと言われてるので素直にfetchしてマージしてみる。コマンドライン(私はWindowsでGit shell使ってます)から以下を実行。
> git fetch
> git merge origin/master
こうするとlocalにReadme.mdがmergeされる。あとは以下のコマンドでpushを再度チャレンジ。
> git push -u origin master
すると今度は無事に完了。めでたしめでたし。しかしSubversionは使ったことあるから何となくGitも雰囲気はわかるけど、まだまだ慣れが必要だ。このあとReadme.mdはいらんなと思い、消しました。
gitとgithubを本格的に勉強したいなら
gitやgithubは今やプログラマの基礎教養みたいなもの。私のような日曜プログラマならともかく、業務でがっつり使う人は一度しっかり本で勉強してみるのが良いかも。以下の本は少し古いが、今でもgit入門の名著として評価が高い。興味があればぜひ。