Heroku придерживается политики игнорирования всех ветвей, кроме «master».
Хотя я уверен, что у дизайнеров Heroku есть веские причины для этой политики (я предполагаю, что для хранения и оптимизации производительности), для меня как для разработчика следствием является то, что в какой-либо локальной ветке тем, над которой я могу работать, я бы хотел легкий путь переключить мастера Heroku на эту локальную ветку и выполнить команду «git push heroku -f», чтобы перезаписать мастер на Heroku.
Что я получил, прочитав раздел «Pushing Refspecs» на http://progit.org/book/ch9-5.html :
git push -f heroku local-topic-branch: refs / возглавляет / мастер
Что мне действительно нравится, так это способ установить это в файле конфигурации так, чтобы «git push heroku» всегда делал вышеуказанное, заменяя local-topic-branch на имя того, кем является моя текущая ветка. Если кто-нибудь знает, как этого добиться, пожалуйста, дайте мне знать!
Предостережение для этого, конечно, заключается в том, что это разумно, только если я единственный, кто может перейти к этому приложению / репозиторию Heroku. Команда тестирования или QA может управлять таким репозиторием, чтобы опробовать разные ветви-кандидаты, но им придется координировать свои действия, чтобы они все сошлись во мнении, какую ветку они продвигают в данный день.
Излишне говорить, что было бы очень неплохо иметь отдельный удаленный репозиторий (например, GitHub) без этого ограничения для резервного копирования всего. Я бы назвал это «происхождение» и использовал бы «heroku» для Heroku, так что «git push» всегда копирует все в начало, а «git push heroku» помещает любую ветвь, в которой я сейчас нахожусь, в главную ветку Heroku, перезаписывая ее если необходимо.
Будет ли это работать?
[удаленная "герока"] url = git@heroku.com: my-app.git нажать = + ссылки / головы / *: ссылки / головы / мастер
Я хотел бы услышать от кого-то более опытного, прежде чем я начну экспериментировать, хотя я полагаю, что мог бы создать фиктивное приложение на Heroku и поэкспериментировать с этим.
Что касается извлечения, то мне все равно, доступен ли репозиторий Heroku только для записи. У меня все еще есть отдельный репозиторий, такой как GitHub, для резервного копирования и клонирования всей моей работы.
Сноска. Этот вопрос похож на развертывание Good Git с использованием стратегии ветвления с Heroku , но не совсем так ?
Ответы:
При использовании подстановочного знака он должен присутствовать с обеих сторон refspec, поэтому
+refs/heads/*:refs/heads/master
не будет работать. Но вы можете использовать+HEAD:refs/heads/master
:Кроме того, вы можете сделать это напрямую с помощью git push :
источник
git push
команды делают то же самое. Смотритеgit push --help
значение-f
опции и+
в refspec.-f
означает силу . Это сработало для меня с ответом Яссы .Смотрите https://devcenter.heroku.com/articles/git#deploying-code
источник
git push :master
что удаляет основную ветку, перезаписывая ее ни с чем. Это отличается от перезаписи другой веткой. В Heroku, вероятно, предусмотрены меры предосторожности для предотвращения удаления основной ветви.источник
-f
или--force
, и всегда лучше убедиться, что вы знаете, что делаете, когда вы нажимаете на себя.Самая безопасная команда для передачи различных локальных веток Git в Heroku / master.
Примечание. Несмотря на то, что вы можете использовать push без использования -f, рекомендуется использовать флаг -f (force), чтобы избежать конфликтов с другими разработчиками.
источник
Для меня это работает,
источник: - официальные документы
источник
Также обратите внимание, что если вы используете систему git flow и ваша ветвь возможностей, может быть вызвано
и с помощью git remote под названием stagingtwo, тогда команда нажать на heroku будет
источник
Вы должны проверить heroku_san , это решает эту проблему довольно хорошо.
Например, вы могли бы:
Это также упрощает запуск новых экземпляров Heroku для развертывания ветки тем на новых серверах:
И, конечно, вы можете делать более простые рейк-задачи, если часто что-то делаете.
источник
Я нашел это полезным. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
источник
В Heroku labs теперь есть дополнение к github, которое позволяет вам указать, какую ветвь нажать.
Посмотрите, как Heroku пишет об этой бета-версии.
Вам нужно зарегистрироваться в качестве бета-тестера на данный момент.
источник
Я думаю, что это должно быть
push = refs/heads/*:refs/heads/*
вместо...
источник