Как направить разные локальные ветки Git на Heroku/master
Heroku имеет политику игнорирования всех ветвей, но "мастер".
Хотя я уверен, что дизайнеры Heroku имеют отличные основания для этой политики (я предполагаю, что для хранения и оптимизации производительности), последствием для меня как разработчика является то, что независимо от того, в какой бы ветке темы я не работал, я бы хотел простой способ переключить мастер Heroku в эту локальную ветку темы и сделать "git push heroku -f" для перезаписи мастера на Heroku.
Что я получил от чтения раздела "Pushing Refspecs" http://progit.org/book/ch9-5.html, является
git push -f heroku local-topic-branch:refs/heads/master
Мне бы очень хотелось, чтобы это можно было установить в файле конфигурации, чтобы "git push heroku" всегда выполнял вышеуказанное, заменяя ветвь локального раздела именем того, что происходит с моей текущей ветвью быть. Если кто-то знает, как это сделать, пожалуйста, дайте мне знать!
Опасение для этого, конечно, состоит в том, что это только разумно, если я единственный, кто может нажать на это приложение/репозиторий Heroku. Команда тестирования или QA может управлять таким репозиторием, чтобы опробовать разные ветки кандидата, но им нужно будет согласовать, чтобы все они согласились с тем, к какой ветки они нажимают на него в любой день.
Излишне говорить, что было бы очень неплохо иметь отдельный удаленный репозиторий (например, GitHub) без этого ограничения для поддержки всего. Я бы назвал это "происхождением" и использовал "героку" для Хероку, чтобы "git push" всегда поддерживал все по происхождению, а "git push heroku" толкает любую ветвь, в которой я сейчас ведусь, мастеру Героку ветвь, переписывая его, если необходимо.
Будет ли это работать?
[remote "heroku"]
url = [email protected]:my-app.git
push = +refs/heads/*:refs/heads/master
Я хотел бы услышать от кого-то более опытного, прежде чем я начну экспериментировать, хотя, я полагаю, я мог бы создать фиктивное приложение на Heroku и поэкспериментировать с этим.
Что касается выборки, мне все равно, если репозиторий Heroku является только для записи. У меня все еще есть отдельный репозиторий, такой как GitHub, для резервного копирования и клонирования всей моей работы.
Сноска: этот вопрос похож на, но не совсем такой же, как Хорошее развертывание Git с использованием стратегии веток с Heroku?
Ответы
Ответ 1
При использовании подстановочного знака он должен присутствовать на обеих сторонах 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
Ответ 2
См. https://devcenter.heroku.com/articles/git#deploying-code
$ git push heroku yourbranch:master
Ответ 3
git push -f local_branch_name:master
Ответ 4
Вы должны проверить 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
И, конечно, вы можете делать более простые задачи рейка, если вы что-то делаете часто.
Ответ 5
Также обратите внимание, что если вы используете систему потока git и вашу ветку функций, можно назвать
feature/mobile_additions
и с git удаленным вызовом stagingtwo, тогда команда push to heroku будет
git push stagingtwo feature/mobile_additions:master
Ответ 6
Самая безопасная команда для перемещения разных локальных ветвей Git в Heroku/master.
git push -f heroku branch_name:master
Примечание.. Хотя вы можете нажать без использования -f, рекомендуется использовать -f (флаг force), чтобы избежать конфликтов с другими разработчиками.
Ответ 7
Я нашел это полезным.
http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
Ответ 8
В лабораториях Heroku теперь есть надстройка github, которая позволяет указать, какую ветвь нажать.
Смотрите, как Heroku записывает эту бета-версию.
Вам нужно зарегистрироваться в качестве бета-тестера на время.
Ответ 9
Я думаю, что это должно быть
push = refs/heads/*:refs/heads/*
вместо...