Comment pousser différentes branches Git locales à Heroku / master

Heroku a pour Politique d'Ignorer toutes les branches sauf le "maître".

bien que je suis sûr que les concepteurs de Heroku ont d'excellentes raisons pour cette politique (je devine pour le stockage et l'optimisation de la performance), la conséquence pour moi en tant que développeur est que quelle que soit la branche thématique locale que je peux être en train de travailler sur, Je voudrais un moyen facile de passer le maître de Heroku à cette branche thématique locale et faire un "git push heroku-F" à Over-write master sur Heroku.

Ce Que Je obtenu de la lecture de la section "poussant Refspecs" de http://progit.org/book/ch9-5.html est

git push -f heroku local-topic-branch:refs/heads/master

ce que j'aimerais vraiment c'est une façon de configurer cela dans le fichier de configuration pour que" git push heroku "fasse toujours ce qui précède, en remplaçant local-topic-branch par le nom de n'importe quelle branche actuelle. Si quelqu'un sait comment y parvenir, s'il vous plaît laissez-moi savoir!

La mise en garde pour ceci, bien sûr, est que cela est seulement raisonnable si je suis le seul qui peut pousser à cette application/dépôt Heroku. Une équipe d'essai ou D'assurance de la qualité pourrait gérer un tel référentiel pour essayer différentes branches candidates, mais elles devraient coordonner de sorte qu'elles s'entendent toutes sur la branche qu'elles poussent vers elle à n'importe quel jour donné.

inutile de dire que ce serait aussi une très bonne idée d'avoir un dépôt distant séparé (comme GitHub) sans cette restriction pour tout sauvegarder. J'appellerais ça une " origine "et j'utiliserais" heroku "pour Heroku pour que" git push "soutienne toujours tout à l'origine, et" git push heroku " pousse n'importe quelle branche sur laquelle je suis actuellement à la branche principale D'Heroku, en l'écrasant si nécessaire.

est-ce que ça marcherait?

[remote "heroku"]
    url = git@heroku.com:my-app.git
    push = +refs/heads/*:refs/heads/master

j'aimerais entendre quelqu'un de plus expérimenté avant de commencer à expérimenter, bien que je suppose que je pourrais créer une application factice sur Heroku et expérimenter avec cela.

pour ce qui est de la récupération, je me fiche que le dépôt Heroku ne soit qu'en écriture. J'ai toujours un dépôt séparé, comme GitHub, pour la sauvegarde et le clonage de tout mon travail.

note de bas de page: cette question est similaire, mais pas tout à fait la même que bon déploiement Git en utilisant la stratégie branches avec Heroku?

331
demandé sur techdreams 2010-06-04 08:37:59

9 réponses

en utilisant un joker, il devait être présent des deux côtés de la refspec, donc +refs/heads/*:refs/heads/master ne fonctionnera pas. Mais vous pouvez utiliser +HEAD:refs/heads/master :

git config remote.heroku.push +HEAD:refs/heads/master

aussi, vous pouvez le faire directement avec git push :

git push heroku +HEAD:master
git push -f heroku HEAD:master
111
répondu Chris Johnsen 2013-10-30 02:10:07

voir https://devcenter.heroku.com/articles/git#deploying-code

$ git push heroku yourbranch:master
1325
répondu jassa 2017-02-24 12:43:59
git push -f heroku local_branch_name:master
33
répondu Tomasz Mazur 2018-09-11 12:03:32

vous devriez vérifier heroku_san , il résout ce problème assez bien.

par exemple, vous pouvez:

git checkout BRANCH
rake qa deploy

il rend également facile de lancer de nouvelles instances Heroku pour déployer une branche de sujet à de nouveaux serveurs:

git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates

et bien sûr vous pouvez faire des tâches de râteau plus simples si vous faites quelque chose fréquemment.

4
répondu jqr 2010-12-21 04:24:35

notez également que si vous utilisez le système de flux git et votre branche caractéristique pourrait être appelé

feature/mobile_additions

et avec une télécommande git appelée stagingtwo, alors l'ordre de pousser à heroku serait

git push stagingtwo feature/mobile_additions:master
4
répondu Jonathon Batson 2014-01-22 04:57:06

la commande la plus sûre pour pousser différentes branches Git locales à Heroku/master.

git push -f heroku branch_name:master

Note: bien que vous puissiez pousser sans utiliser l'option-f, l'option-f (force flag) est recommandée afin d'éviter les conflits avec les pushs des autres développeurs.

4
répondu techdreams 2016-11-24 06:50:06

Heroku labs offre maintenant un add-on github qui vous permet de spécifier quelle branche à pousser.

voir L'article D'Heroku sur cette fonctionnalité bêta.

vous aurez besoin de vous inscrire en tant que bêta-testeur pour le temps-être.

1
répondu irth 2014-12-02 02:01:07

je pense qu'il devrait être

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

à la place...

0
répondu ken 2010-06-05 11:16:47