Heroku push отклоняется, после переустановки ОС?
Я следую учебным пособиям, сделанным Майклом Хартлом, но я склонен сильно разбираться в Linux. Я клонировал свой репозиторий из github, и у меня все хорошо. Однако я больше не могу толкать Герою, и я не уверен, почему именно...
Вот команды, которые я пытаюсь выполнить:
$ bundle exec rake test
$ git add -A
$ git commit -m "Use SSL and the Puma webserver in production"
$ git push
$ git push heroku
$ heroku run rake db:migrate
Все работает до последней части:
git push heroku
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.
In Git 2.0, Git will default to the more conservative 'simple'
behavior, which only pushes the current branch to the corresponding
remote branch that 'git pull' uses to update the current branch.
See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)
To git@heroku.com:morning-stream-6357.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com:morning-stream-6357.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Я не совсем уверен, как это вообще исправить:/ Может кто-нибудь помочь? Я исследовал это и добавил удаленное репозиторий heroku, используя это:
git remote add heroku-remote git@heroku.com:project.git
Конечно, изменить его для моего кода было бы так:
git remote add heroku-remote git@heroku.com:morning-stream-6357.git
Но я все еще не могу нажать из командной строки, я нажимал кнопку развертывания heroku, которая позволяет мне развернуть ветку master, но я думаю, что это не очень хорошая идея, иначе я думаю, что это будет упомянуто в книге. Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: На случай, если кому-то интересно, я установил пояс инструмента Heroku.
РЕДАКТИРОВАТЬ: я должен был отметить, что я действительно уже пытался выполнить эту команду:
git push heroku master
Но это все равно дает мне ошибку:
jose@jose-desktop:~/Workspace/sample_app$ git push heroku master
To git@heroku.com:morning-stream-6357.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@heroku.com:morning-stream-6357.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Я не уверен, что вызывает это, это должно быть в курсе. Я клонировал репозиторий и вручную развернул его из соединения с github heroku, поэтому оно должно быть текущим.
git pull
Результаты в этом:
jose@jose-desktop:~/Workspace/sample_app$ git pull
Already up-to-date.
3 ответа
Я просто исправил это и создал новое репозиторий heroku через сайт heroku, а затем добавил репо:
heroku login
heroku git:clone -a whispering-hamlet-1487
К сожалению, это приводит к тому, что "несколько" приложений heroku находятся в одном каталоге, поэтому для переноса базы данных, как мы и предполагали в листинге 7.30 в книге Майкла Хартла, ее нельзя перенести с помощью этого:
heroku run rake db:migrate
Вместо этого он должен быть перенесен с помощью:
heroku run rake db:migrate -app whispering-hamlet-1487
Я полностью выписал это на тот случай, если кто-то еще изучит рельсы, это затруднит это и ему нужно будет сослаться на это в будущем. Вам следует заменить whispering-hamlet-1487 на название вашего приложения.
К сожалению, я не смог найти способ продолжить использовать старое репо, но, честно говоря, это не имеет значения, это похоже на полную PTA. Гораздо лучше просто отказаться от этого. Если кто-то знает способ сделать это без необходимости создания нового репо, я бы с радостью приветствовал это, поскольку я представляю, что во время съемок это будет не лучшим вариантом действий.
Вам нужно будет сделать git pull heroku master
слить свою героку, изменения локально. Когда вы делаете git pull
это делает git pull origin master
который гитхуб а не геройку. Поэтому любые изменения, которые вы внесли в свою героку, вызывают конфликт.
Также вам нужно установить опцию git match из командной строки, используя
git config --global push.default matching
или же
git config --global push.default simple
,
Они сообщают git, какую ветку нажать, вместо того, чтобы ее нужно было явно выдвигать, например, с основной веткой git push heroku master
, Вот что пытается сообщить вам это сообщение об ошибке.
Примечание: Heroku примет только вашу основную ветку, если вы явно не укажете ее git push heroku yourbranch:master
https://devcenter.heroku.com/articles/git
Это описано в руководстве по Hartl в разделе 1.4.1 Установка и настройка, которые вам необходимо выполнить за один раз:
$ git config --global user.name "Your Name"
$ git config --global user.email your.email@example.com
$ git config --global push.default matching
$ git config --global alias.co checkout
Вы должны указать ветку, которую вы нажимаете на Heroku.
попробуйте запустить git push heroku master
скорее, чем git push Heroku
,
Если вы хотите добавить в Heroku ветку, отличную от master, то вы можете сделать это:
git push heroku yourBranchName:master
Кроме того - сообщение об ошибке говорит вам git pull
прежде чем нажать снова. Вы, вероятно, должны это сделать.