GitHub の failed to push some refs:原因と解決策
冒頭まとめ error: failed to push some refs to '...' は、理由を含んでいません。git の実装では、送信の処理が失敗して戻ってきたときに、この1行を無条件で出します。中身が何であれ表示されるため、この行を検索しても自分の状況に合う答えには辿り着きにくくなります。 理由は、この行の1つ上に出ます。! [rejected] で始まる行の末尾、括弧の中に入る語がそれです。入りうる語は non-fast-forward、fetch first、already exists、needs force、stale info の5つと、受け取り側が断ったことを示す [remote rejected] です。 その下に続く hint: の行にも注意が要ります。git は拒否の理由を集めたうえで、if と else if の並びで最初に当てはまった1件だけを表示します。つまり2つのブランチが別々の理由で拒まれても、助言は片方の分しか出ません。助言のとおりに git pull をしても、もう一方は直りません。 助言が1行も出ない場合もあります。stale info と [remote rejected] は、どちらも助言の対象から外れているためです。何も出ないから情報が無いのではなく、そこが読むべき箇所だと考えてください。 エラーの概要 出力は次の形になります。 To https://github.com/OWNER/REPO.git ! [rejected] main -> main (fetch first) error: failed to push some refs to 'https://github.com/OWNER/REPO.git' hint: Updates were rejected because the remote contains work that you do not hint: have locally. This is usually caused by another repository pushing to hint: the same ref. If you want to integrate the remote changes, use hint: 'git pull' before pushing again. 読む順序は下からではありません。! で始まる行が先で、error: の行は結果の要約です。送ろうとしたブランチが複数あれば、! の行も複数並びます。 ...