15

私は Heroku を使用していて、Rails アプリが安定しています (本番環境) ので、Heroku で変更がどのように機能するかを確認できる品質保証環境を持つことができる新しいものを作成したいと考えていました (および常に本番アプリにプッシュする必要はありません。

そこで私がしたことは、新しい Heroku アプリを作成し、ローカルに新しいブランチ (dev) を作成することでした。私の意図は、新しい Heroku QA アプリで変更をテストした後、ローカルで dev を master にマージし、マスター ブランチから Heroku プロダクションにプッシュすることでした。

私のアプローチは私のランドスケープでは悪いものかもしれません.

しかし、開発ブランチを新しい QA アプリにプッシュすると、QA アプリの開発ブランチにはプッシュできましたが、マスターにはプッシュできませんでした。そのため、新しい QA アプリで自分の変更を確認 (およびテスト) できませんでした。QA アプリのマスターにのみマスター ブランチをプッシュできると言っているようですが、既にプルしており、すべてが最新の状態になっているため、次のエラーが表示されます。

Pushing to git@github.com:foobar/QA.git
To git@github.com:foobar/QA.git
! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:foobar/QA.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull')
hint: before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

私の環境またはGitのどちらかで、私が間違っていることを理解するのを手伝ってもらえますか? ありがとうございました。

4

3 に答える 3

38

-ff(早送り) オプションでプッシュしてみてください: git push heroku master -ff( herokuheroku リモートの実際の名前に置き換えてください)。

于 2012-06-08T20:48:21.823 に答える
26

Heroku アプリは、アプリ リポジトリ (Heroku に対してローカル) の master ブランチからのみ実行されます。ローカル リポジトリのマスター ブランチではない Heroku にブランチをデプロイする場合は、それを指定する必要があります。あなたの場合、git push qa-remote dev:master(qa-remote を QA アプリのリモートの実際の名前に置き換えてください) のようなもので、ローカルの dev ブランチを qa-remote の master ブランチにプッシュします。

-f初めてそのようにプッシュするときは、プッシュを強制する (非早送り) フラグを追加する必要があるでしょう。-fその後、ローカル ブランチが最新である限り、フラグなしでプッシュできるはずです。

于 2012-06-08T21:26:17.917 に答える