Rails
Git
GitHub
初心者

Githubにpushしようと思ったらfetch firstうんたらかんたらでrejectedされた


初めてのQiita投稿です

稚拙極まりない文章、内容も疾っくの疾うに既出と思われますが、どうか温かい目で見守って頂けたら嬉しいです。


Githubにpushしようとして詰まるまで

途中に明らかな詰まりの原因があるので、分かる方はツッコミ入れたくなると思います。じゃ、行きマース。


Ruby on Railsでブログを作りたい

とにかく何かWebアプリケーションをこの手で作ってみたかったので、手っ取り早くて比較的挫折しなさそうなRailsでブログを作ることにしました。

その過程で行き詰ったことをこんな感じでQiitaに記録していこうと思います。

初歩的な地雷は虱潰しに踏んで回ると思いますので、先輩方にはお手数おかけしますがご指導ご鞭撻のほど宜しくお願いいたします。

じゃ、色々飛ばしマース。

$ rails new blog

$ cd blog
$ git init
$ git add -A
$ git commit -m "Initialize repository"

Gitについては(僕自身が理解するために)また別の記事でシッカリまとめたいのですが、とりあえずは“手元にもリポジトリのある”バージョン管理システムというぼやっとした認識でいます。

ここでは$git initで作ったローカルリポジトリ(手元のリポジトリ)にcommitしただけです。個人開発なので必要ないかもしれませんが、どうせならリモートリポジトリ(共有のリポジトリ)にもpushしたい。


Githubにリポジトリ作った

README.JPG

というわけで、まずはGithubにリモートリポジトリを作りました。

無料会員だから公開設定はPublicで、「READMEを勝手に作ってくれる」という項目にもなんとなくチェックしときました。


リモートリポジトリ(Github)にpushしようとした

$git remote add origin https://github.com/TaskEngineer/TaskWorksPortfolio

$git push origin master

リモートリポジトリの情報を追加し、pushで反映させます。

普通はこれで上手くいくそうなのですが、、、


そしたら思っきし蹴られた

! [rejected] master -> master (fetch first)

error: failed to push some refs to ‘https://github.com/TaskEngineer/TaskWorksPortfolio’
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.

よくよくググってみると、このエラーはリモート(リポジトリ)をpullしてからpushするまでに他のpushがあるなどしてリモートが変更されたために起こるものとのこと。

でも、リモートは作ったばかりでまだ一度もpushしていないのにpullしなくてはいけないというのはどういうこと???


解決編

ついさっきGithubでリモートを作るときになんとなくREADMEを作ってもらいましたが、実はその操作で一度commitしたことになっているらしいのです。

なので、まずはfetchしてね、というエラーメッセージでした。

pullはfetch+mergeなのですが、ここは楽しようとせずに、確実にfetch→mergeしていきます。

$git fetch

$git merge origin/master

これで上手くいきました。こんな初歩的なエラーで何時間も悩んで、先が思いやられます。。。


参考