web-dev-qa-db-ja.com

gitを使用したherokuへのデプロイは、早送りのために拒否され続けます

Heroku + gitで次の失敗が発生し続けます...

$ heroku jammit:deploy --app XXXXXXXXXXX
===== Compiling assets...[OK]
===== Commiting assets...[OK]
===== Done...
===== Deploying assets for xxxxx-staging to heroku...
To [email protected]:XXXXXXXX.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to Push some refs to '[email protected]:xxx-staging.git'
To prevent you from losing history, non-fast-forward updates were rejected
Merge the remote changes (e.g. 'git pull') before pushing again.  See the
'Note about fast-forwards' section of 'git Push --help' for details.
[FAIL]
===== Done...
===== Deleting compiled assets...[OK]
===== Commiting deleted assets...[OK]
===== Done...
$ git pull
Already up-to-date.

私が間違っていること、またはプッシュを強制することなくプッシュできるようにするために別の方法で行う必要があるアイデアはありますか?

ありがとう

27
AnApprentice

プッシュするたびにコミットを強制するだけで、早送りのコミットがある場合でもプッシュされます。これは、開発中のHerokuサーバーで常に行っています。これは、全員が異なるコミットをプッシュしているためです(一部は他よりも遅れています)。

git Push -f [email protected]:picasso-staging.git

デプロイにはjammitを使用しませんが、最初に強制的にプッシュしてから、次にjammitタスクを実行することで回避できる可能性があります。または、jammitが何らかの強制プッシュフラグをサポートしているかどうかを確認してください。

85
iwasrobbed
git Push -f REMOTE BRANCH:master #or just master

強制的に! REMOTEをherokuリモート名(git remote -vすべてのリモコンを表示します)。 BRANCHをプッシュするブランチに置き換えるか、マスターブランチに「master」を配置します。

7
dsmithco

問題は、変更がすでにプッシュされており、コミットがそれらの新しいプッシュの背後にあることです。マスターブランチと機能ブランチがまだあると仮定します。たとえば、my_featureと呼ばれます。あなたはこれを行うことができ、大丈夫です:

git checkout master
git pull
git checkout my_feature
git rebase master
    (you may have to fix some conflicts here, if any are found)
git checkout master
git merge my_feature
git Push heroku

すべてがまだ良好であることを確認するために必要なテストを実行することを忘れないでください。

1
MrDanA