この記事で解決すること
ターミナルで git push したら、こんなエラーが出た。
! [rejected] main -> main (fetch first)
error: failed to push some refs to 'https://github.com/...'
「rejected」って何? 壊した? と焦るかもしれませんが、大丈夫です。よくあることで、簡単に直せます。
なぜこのエラーが出るのか
GitHub上のコードと、あなたのPC上のコードが「ズレている」のが原因です。
たとえばこんな状況:
- GitHubの画面で直接ファイルを編集した
- 別のPCからpushした
- リポジトリを作るときにREADMEを自動生成した
GitHubの方が「先に進んでいる」ので、Gitが「まずそっちの変更を取り込んでからpushしてね」と言っています。
解決方法
ステップ1: GitHubの変更を取り込む
git pull origin main
これでGitHub上の変更をあなたのPCに取り込みます。
pull は「引っ張ってくる」という意味で、GitHubからコードをダウンロードする操作です。
ステップ2: もう一度pushする
git push origin main
これで通るはずです。
pullしたら「conflict」と言われた場合
まれに、同じファイルの同じ場所を両方で編集していると「conflict(競合)」が起きます。
CONFLICT (content): Merge conflict in ファイル名
この場合は、該当ファイルを開くとこんな表示があります:
<<<<<<< HEAD
あなたのPCの内容
=======
GitHubの内容
>>>>>>> origin/main
残したい方を選んで、<<<<<<< ======= >>>>>>> の行を削除してから:
git add .
git commit -m "conflictを解決"
git push origin main
まとめと次のステップ
rejectedは「GitHubの方が先に進んでるよ」という意味git pullしてからgit pushすれば解決- conflictが出たら、ファイルを開いて残したい方を選ぶ
Gitに慣れないうちはこのエラーに何度も出会います。でも毎回やることは同じなので、すぐ慣れます。
関連リソース
Gitをもっと学びたい方へ:
リンク