Как нажать различные местные ветви 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

git push -f heroku local_branch_name: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 (флаг силы) рекомендуется, чтобы избежать конфликтов с толчками других разработчиков.



Heroku labs теперь предлагает дополнение github, которое позволяет вам указать, какую ветку нажать.

см. запись Heroku в этой бета-версии.

вам нужно зарегистрироваться в качестве бета-тестера на данный момент.


Я думаю, что это должно быть

push = refs/heads/*:refs/heads/*

вместо...