見出し画像

git+herokuでブランチを使おうとしたらエラー

前提

今回やりたいこと

ブランチを指定してデプロイ

失敗した内容

エラーメッセージ

git push heroku develop:main
To https://git.heroku.com/sushi.git

! [rejected]        develop -> main (non-fast-forward)
error: failed to push some refs to 'https://git.heroku.com/sushi.git'
hint: Updates were rejected because a pushed branch tip is behind its remote
hint: counterpart. Check out this branch and integrate the remote changes
hint: (e.g. 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

「developをmainにしようと思ったけど中断するね」
「mainのほうが新しいよ」云々

ということみたいです。

参考資料

ありがとうございます。


確認したこと

ローカルコミット待ち→OK

まず、ローカルでコミット待ちなどがないことを確認。
これは大丈夫。

コンフリクト→OK

メインブランチと

履歴齟齬→NG

リモートのブランチの方が先行してる
つまり1度プッシュしたはずのもってないといけないコミット履歴をもってないせいででるエラーです

https://teratail.com/questions/272803

つづいて、説明にあった「履歴の齟齬」ってなに?と思ったので、確認をしてみた。

そしたら、たしかに、このあいだビルドした履歴(最新hotfix)と、今回の最新developが、全然かみ合っていない…orz

同じ個所から分岐したのと、「最新」の時期が違うから、developブランチからhotfixブランチに乗り換えるのは許可されたということなのか…?

github連携で使ってた時は、ブランチを渡り歩くことをあんまり気にしてなかったのだけど、うまくherokuがカバーしてくれていたのかな?

選んだ解決方法

誰とも共有していなくてリモートを使うのが自分だけ
かつプッシュしようとしてるブランチが確実に最新だといえるのであれば
push -f で強制的にローカルの状態をリモートに上書き push できます

https://teratail.com/questions/272803

複数名で触っているソースだけど、sushi環境をdevelopに切り替えるよう指示が出ているので、強制pushしてみよう。

解決の結果→NG


$ git push -f heroku develop:main
(略)
remote: Verifying deploy... done.
To https://git.heroku.com/sushi.git

heroku上のリソースでは、マージ履歴が出た。
実際のgithub履歴には、マージ履歴はでてない。

画面操作してると…微妙…
hotfixにだけはいっているはずの修正が出ている…
「マージ」であって切替じゃないせいか…?


はやくgithubのほうもマージしないとかな…💦

どうしたか

相談の結果、環境増築に…。
githubの履歴をクリア、みたいなのがあればよかったんだけど。


この記事が気に入ったらサポートをしてみませんか?