初めに
webアプリの保守をしていた時にpushができなかったのでその解決方法を紹介します。
エラー内容
To https://~
! [rejected] main -> main (non-fast-forward)
error: failed to push some refs to 'https://~'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. If you want to integrate the remote changes, use 'git pull'
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
原因
そもそも僕はリモートリポジトリに何かしらデータを反映させてました。
でもwebアプリの保守のためにローカルリポジトリではコミットを遡って開発していました。
2つのリポジトリに差があることがpushできない原因になっていました。
解決方法
解決策は2つあって
解決策1. リモートリポジトリの内容をローカルリポジトリに反映させて、修正してからpushする
一旦ローカルリポジトリにリモートリポジトリの内容を反映させて、もう一度修正してからpushをする方法です。
解決策2. ローカルリポジトリの内容をリモートリポジトリに強制的に反映させる
できないことはないのですが、重要な情報がリモートリポジトリにあった場合上書きしてしまうのでやめた方がいいと思います
僕は結局解決策1を使ってpushを行いました。
エラーが消えない!方へ
上記をやってもエラーが消えない方はpushする先を間違えているのかもしれません。
僕はfeature-login-maintenanceというブランチからmainブランチにpushしていました。
feature-login-maintenanceからfeature-login-maintenanceにpushするとうまくいきました。
最後に
結局pushする先が間違えていたからpushができなかったのかもしれません。
エラー内容もmain->mainのpushがrejectされているので、pushする先をしっかり確認したいと思いました。