Ruby on rails 使用git部署到heroku会因为快进而不断遭到拒绝

Ruby on rails 使用git部署到heroku会因为快进而不断遭到拒绝,ruby-on-rails,ruby-on-rails-3,git,heroku,Ruby On Rails,Ruby On Rails 3,Git,Heroku,我在heroku+git中不断遇到以下失败 $ heroku jammit:deploy --app XXXXXXXXXXX ===== Compiling assets...[OK] ===== Commiting assets...[OK] ===== Done... ===== Deploying assets for xxxxx-staging to heroku... To git@heroku.com:XXXXXXXX.git ! [rejected] master

我在heroku+git中不断遇到以下失败

$ heroku jammit:deploy --app XXXXXXXXXXX
===== Compiling assets...[OK]
===== Commiting assets...[OK]
===== Done...
===== Deploying assets for xxxxx-staging to heroku...
To git@heroku.com:XXXXXXXX.git
 ! [rejected]        master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com: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.
你知道我做错了什么,或者应该做些不同的事情,以便在不需要强迫的情况下推动吗


谢谢

问题是更改已经被推送,而您的提交是在那些更新的推送之后进行的。我假设您仍然有一个主分支和您的功能分支,假设它被称为
myfeature
。你可以做到这一点,然后就没事了:

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

您应该记住运行任何测试,以确保一切正常。

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

我不使用jammit进行部署,但您可能会先强制执行,然后再运行jammit任务。或者检查jammit是否支持某种强制推送标志

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

强迫它!将REMOTE替换为heroku REMOTE名称(
git REMOTE-v
以查看所有远程设备)。将分支替换为您要推送的分支,或者只为主分支放置“master”。

谢谢您的帮助,但现在因为我们已启动pre=launch,所以所有操作都在主分支上。建议?$git checkout master已在“master”上您的分支比“origin/master”提前4次提交。origin/master与master不同。origin/master是一个远程分支,当您只执行“git pull”时,它会将更改拉入,然后将它们合并到master(“git fetch”只会将更改拉入origin/master,然后您可以手动合并)。所以,是的,您的主分支比上一次拆下的分支早,所以继续执行
git pull
。你可能会有一些冲突,如果一切都好,那就推吧!如果你已经在本地主机上,那么就不需要重新设置基址。谢谢,但是git pull继续说,一切都是最新的,就像上面问题中提到的那样。你有git的GUI吗,比如gitk?如果没有,你可以下载一个。这会更好,因为您可以查看对存储库的所有提交,查看本地主服务器的位置、源服务器/主服务器的位置,以及查看项目中的最新提交内容。我认为您指的是查看所有远程服务器的“git remote-v”。
git push -f REMOTE BRANCH:master #or just master