2011-08-01 30 views
25

我不断收到以下失败,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. 

任何想法,我做错了或应该做的不同,以允许推动而不必强行推?

感谢

回答

81

只要每次推送都强制执行提交,即使有快进提交,它也会推送提交。我们在开发Heroku服务器的过程中始终这样做,因为我们都在推动不同的提交(一些比其他更落后)。

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

我不使用jammit部署,但你也许可以用力推,然后再第二次运行jammit任务脱身。或者检查并看看jammit是否支持某种强制推送标志。

+0

这个答案应该被接受。 – jpwynn

1

的问题是,变化已经被推迟,你的承诺是那些较新推后。我假设你有一个主分支和你的功能分支,我们假设它叫做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 

你应该记住运行,你必须确保一切都还不错的任何测试。

+0

感谢这一点,但现在,因为我们正在推出,所有这一切都在主分支上。建议? – AnApprentice

+0

$ git checkout master 已在'master'上 您的分支在4次提交之前超过'origin/master'。 – AnApprentice

+0

产地/主人是不一样的主人。 origin/master是一个远程分支,当你只是做“git pull”时,它将更改拉入到,然后将它们合并到master中(“git fetch”只是将更改引入到origin/master,然后可以手动合并)。所以,你的主分支领先于最后一次拉下来的东西,所以继续前进,然后'git pull'。你可能会遇到一些冲突,如果一切顺利,只要再推动一下就行了!如果您已经在您的本地主人身上,则无需重新绑定。 – MrDanA

7
git push -f REMOTE BRANCH:master #or just master 

强迫它!将REMOTE替换为您的heroku远程名称(git remote -v以查看所有遥控器)。将BRANCH替换为您想要推送的分支或将主分支放在“主”上。

+1

我想你的意思是“git remote -v”来查看所有的遥控器。 –

+0

是的,感谢拼写检查 – dsmithco