Rails で個人でアプリケーションを開発中です。
表題のエラーが出た際に、改めてgitの理解が深まりましたので備忘録として残します。
状況
開発中のタイミングで普段通り、「git pusu origin ブランチ名」で、
ローカルの変更をリモートにpushしようとすると。。。
git push origin develop
To https:///githubのURL !
[rejected]develop -> develop (non-fast-forward)error: failed to push some refs to 'https://githubのURL'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
上記のエラーが出ました。
原因
このcommitを行う前に、私がリモートでgithubのREADMEの変更を行っていたことが
今回のエラーの原因でした。
「リモートのファイルがローカルのファイルも最新版だから、そのファイルにpushできないですよ」ということみたいです。
対処法
いくつか対処法があるみたいです。
①git pull origin develop
git pull origin developでリモートの環境をローカルファイルにpullした後、
再度pushを行う。
②git fetchした後、git mergeする
①とやっていることはほとんど変わらず、pull=fetch + mergeという意味合いなのかと思います。
③git push ––forceで矯正的にpushする
こちらは、個人開発なら自分一人しかリポジトリを操作しないので大きな影響はなさそうですが、
チーム開発の場合だと自分以外にcommitやpushする人がいる無闇に使用すべきでは無い、という記事をいくつか確認しました。
①か②で対処するのが無難かもしれません・・・(私は①で対処しました)
備考
「origin」や「master」の理解については、こちらの記事が大変参考になりました!
Git - originとmasterとは何か(初心者向け)
2021/05/28追記
この記事を読んでくださってありがとうございます!
エンジニアとして駆け出しきれてもいない初学者時代に書いたので内容に不足・誤記などもあるかもしれません....
個人的には、初学者の方は一度こちらの書籍を読むことをオススメします!
わかりやすく、githubについて手を動かしながら体型的に学ぶことができます!
2022/04/21追記
エンジニアになってから読んだ書籍をまとめました!
もしよければこちらも参照ください☺️(随時アップデートしていきます)