【開発環境】GitHubへのpushが「fetch first」と表示されてrejectedとなったときの対処

投稿日:2016年2月7日
最終更新日:2019年6月30日

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入門の名著として評価が高い。興味があればぜひ。

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB DB PRESS plus)


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください