Как нажать различные местные ветви Git в Heroku/master
Heroku имеет политику игнорирования всех ветвей, кроме "master".
то, что я получил от чтения "Толкая Refspecs" раздел http://progit.org/book/ch9-5.html is
git push -f heroku local-topic-branch:refs/heads/master
что я действительно хотел бы, это способ настроить это в файле конфигурации, чтобы "git push heroku" всегда делал выше, заменяя local-topic-branch С именем, каким бы ни было мое текущее отделение. Если кто-нибудь знает, как это сделать, пожалуйста, дайте мне знать!
предостережение для этого, конечно, заключается в том, что это разумно, только если я единственный кто может нажать на это приложение/репозиторий Heroku. Команда тестирования или QA может управлять таким репозиторием, чтобы опробовать различные ветви кандидатов, но они должны будут координировать, чтобы все они согласились с тем, какую ветвь они толкают к ней в любой день.
Излишне говорить, что было бы также очень хорошей идеей иметь отдельный удаленный репозиторий (например, GitHub) без этого ограничения для резервного копирования всего. Я бы назвал это "происхождение" и использовал "heroku" для Heroku, чтобы " git push" всегда поддерживает все в origin, и "git push heroku" толкает любую ветвь, на которой я сейчас нахожусь, в главную ветвь Heroku, перезаписывая ее при необходимости.
будет ли это работать?
[remote "heroku"] url = git@heroku.com:my-app.git push = +refs/heads/*:refs/heads/master
Я хотел бы услышать от кого-то более опытного, прежде чем я начну экспериментировать, хотя я полагаю, что мог бы создать фиктивное приложение на Heroku и поэкспериментировать с этим.
Что касается выборки, мне все равно, является ли репозиторий Heroku только для записи. У меня все еще есть отдельная репозиторий, как и GitHub, для резервного копирования и клонирования всей моей работы.
сноска: этот вопрос похож, но не совсем такой, как хорошее развертывание Git с использованием стратегии ветвей с Heroku?
9 ответов
при использовании подстановочного знака он должен был присутствовать с обеих сторон refspec, поэтому +refs/heads/*:refs/heads/master
не будет работать. Но вы можете использовать +HEAD:refs/heads/master
:
git config remote.heroku.push +HEAD:refs/heads/master
кроме того, вы можете сделать это непосредственно с git push:
git push heroku +HEAD:master
git push -f heroku HEAD:master
см.https://devcenter.heroku.com/articles/git#deploying-code
$ git push heroku yourbranch:master
вы должны проверить heroku_san, это решает эту проблему довольно хорошо.
например, можно:
git checkout BRANCH
rake qa deploy
Это также позволяет легко создавать новые экземпляры Heroku для развертывания ветви темы на новых серверах:
git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates
и, конечно, вы можете сделать более простые задачи рейка, если вы часто что-то делаете.
также обратите внимание, что если вы используете систему git flow и вашу ветвь функций, ее можно назвать
feature/mobile_additions
и с пультом git под названием stagingtwo, тогда команда нажать на heroku будет
git push stagingtwo feature/mobile_additions:master
самая безопасная команда для нажатия различных локальных ветвей Git на Heroku / master.
git push -f heroku branch_name:master
Примечание: хотя, вы можете нажать без использования-f, - F (флаг силы) рекомендуется, чтобы избежать конфликтов с толчками других разработчиков.
Я нашел это полезным. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
Heroku labs теперь предлагает дополнение github, которое позволяет вам указать, какую ветку нажать.
см. запись Heroku в этой бета-версии.
вам нужно зарегистрироваться в качестве бета-тестера на данный момент.