web-dev-qa-db-fra.com

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

Heroku a pour politique d'ignorer toutes les branches sauf le "maître".

Bien que je sois certain que les concepteurs de Heroku ont d’excellentes raisons pour cette politique (pour le stockage et l’optimisation des performances, je suppose), la conséquence pour moi en tant que développeur est que, quelle que soit la branche de sujet locale sur laquelle je travaille, je voudrais un moyen simple pour basculer le maître de Heroku vers cette branche de sujet locale et faire un "git Push heroku -f" pour écraser le maître sur Heroku.

Ce que je tire de la lecture de la section "Pushing Refspecs" de http://progit.org/book/ch9-5.html est

git Push -f heroku branche locale: références/têtes/maître

Ce que j'aimerais vraiment, c’est un moyen de l’installer dans le fichier de configuration de sorte que "git Push heroku" fasse toujours ce qui précède, en remplaçant local-topic-branch avec le nom de la branche actuelle. Si quelqu'un sait comment y parvenir, faites-le moi savoir!

La mise en garde à ce sujet, bien sûr, est que cela n’est raisonnable que si je suis le seul à pouvoir envoyer Push à cette application/ce référentiel Heroku. Une équipe de test ou d’assurance qualité peut gérer un tel référentiel afin d’essayer différentes branches candidates, mais elle devra se coordonner pour qu’elles s’entendent sur la branche qu’elles y poussent un jour donné.

Il va sans dire que ce serait également une très bonne idée de disposer d'un référentiel distant séparé (comme GitHub) sans cette restriction pour tout sauvegarder. J'appellerais celui-ci "Origin" et utiliserais "heroku" pour Heroku afin que "git Push" sauvegarde toujours tout le contenu vers Origin, et que "git Push heroku" insère la branche que je suis actuellement sur la branche principale de Heroku, en la remplaçant. si nécessaire.

Cela fonctionnerait-il?

 [distant "heroku"] ​​
 url = [email protected]: my-app.git 
 Push = + refs/heads/*: réfs/heads/master 

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

En ce qui concerne la récupération, peu m'importe que le référentiel Heroku soit en écriture seule. J'ai toujours un référentiel séparé, comme GitHub, pour la sauvegarde et le clonage de tout mon travail.

Note de bas de page: Cette question est semblable à (mais pas tout à fait la même chose que --- bon déploiement de Git en utilisant une stratégie de branches avec Heroku?

372

Lorsque vous utilisez un caractère générique, il doit être présent des deux côtés de la référence, de sorte que +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

En outre, vous pouvez le faire directement avec git Push:

git Push heroku +HEAD:master
git Push -f heroku HEAD:master
119
Chris Johnsen

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

$ git Push heroku yourbranch:master
1485
jassa
git Push -f heroku local_branch_name:master
48
Tomasz Mazur

La commande la plus sûre pour pousser différentes branches Git locales vers Heroku/maître.

git Push -f heroku branch_name:master

Remarque: Bien que vous puissiez pousser sans utiliser -f, l’option -f (indicateur de force) est recommandée afin d’éviter les conflits avec les push d’autres développeurs.

6
techdreams

Notez également que si vous utilisez le système git flow et votre branche technique, appelez-les.

feature/mobile_additions

et avec une télécommande git appelée stagingtwo, la commande Push to heroku serait

git Push stagingtwo feature/mobile_additions:master
5
Jonathon Batson

Vous devriez vérifier heroku_san , cela résout ce problème assez bien.

Par exemple, vous pourriez:

git checkout BRANCH
rake qa deploy

Il facilite également la création de nouvelles instances Heroku pour déployer une branche de sujet sur 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 simplifier les tâches de rake si vous faites quelque chose fréquemment.

4
jqr
2
David

Heroku Labs propose désormais un complément github qui vous permet de spécifier quelle branche activer.

Voir la rédaction de Heroku sur cette fonctionnalité bêta.

Vous aurez besoin de vous inscrire en tant que testeur bêta pour le moment.

1
irth

Je pense que ça devrait être

Push = refs/heads/*:refs/heads/*

au lieu...

0
ken