git pushが「rejected (fetch first)」で弾かれるときの対処
pushしようとすると、こう弾かれる。
! [rejected] main -> main (fetch first)error: failed to push some refshint: Updates were rejected because the remote contains work that you do not have locally.リモート側に、自分の手元にまだ無いコミットがある、という状態だ。誰かが先にpushしたか、別の端末から更新したときに起きる。手元が古いまま上書きできないので、Gitが止めている。
まずリモートの変更を取り込む
リモートの更新を取得して、自分の作業をその上に乗せ直す。
git pull --rebase origin mainコンフリクトが出たら、該当ファイルを直して続行する。
git add .git rebase --continue取り込めたらpushする
git push origin mainforce push は基本使わない
git push --force で無理やり上書きもできるが、リモートの他人のコミットを消す危険がある。共同作業では避ける。どうしても必要なときだけ、影響範囲を理解して使う。
まとめ
- 原因はリモートにローカル未取得のコミットがある
git pull --rebaseで取り込んでから push- コンフリクトは直して
git rebase --continue --forceは他人の作業を消すリスクがあるので安易に使わない