Heroku a pour politique d'ignorer toutes les branches sauf «maître».
Bien que je sois sûr que les concepteurs de Heroku ont d'excellentes raisons pour cette politique (je suppose pour le stockage et l'optimisation des performances), la conséquence pour moi en tant que développeur est que quelle que soit la branche de sujet locale sur laquelle je puisse travailler, j'aimerais 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 j'ai obtenu en lisant la section "Pushing 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 un moyen de mettre cela en place 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 ce que ma branche actuelle est. Si quelqu'un sait comment y parvenir, faites-le moi savoir!
La mise en garde pour cela, bien sûr, est que cela n'est raisonnable que si je suis le seul à pouvoir accéder à cette application / référentiel Heroku. Une équipe de test ou d'assurance qualité pourrait gérer un tel référentiel pour essayer différentes branches candidates, mais elles devraient se coordonner de manière à ce qu'elles s'accordent toutes sur la branche sur laquelle elles le poussent un jour donné.
Inutile de dire que ce serait également une très bonne idée d'avoir un référentiel distant séparé (comme GitHub) sans cette restriction pour tout sauvegarder. Je l'appellerais "origine" et j'utiliserais "heroku" pour Heroku afin que "git push" sauvegarde toujours tout à l'origine, et "git push heroku" pousse n'importe quelle branche sur laquelle je suis actuellement vers la branche principale de Heroku, en l'écrasant si nécessaire.
Est-ce que cela fonctionnerait?
[heroku à distance] url = [email protected]: my-app.git push = + refs / heads / *: refs / 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 ça.
En ce qui concerne la récupération, je ne me soucie pas vraiment si le référentiel Heroku est 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 similaire, mais pas tout à fait la même chose que le déploiement de Good Git en utilisant la stratégie des branches avec Heroku?
Réponses:
Lors de l'utilisation d'un caractère générique, il devait être présent des deux côtés de la refspec, donc
+refs/heads/*:refs/heads/master
cela ne fonctionnera pas. Mais vous pouvez utiliser+HEAD:refs/heads/master
:Vous pouvez également le faire directement avec git push :
la source
git push
commandes font la même chose. Voirgit push --help
pour la signification de l'-f
option et la+
dans la refspec.-f
synonyme de force . Cela a fonctionné pour moi avec la réponse de Jassa .Voir https://devcenter.heroku.com/articles/git#deploying-code
la source
git push :master
ce qui supprime la branche principale en la remplaçant par rien. C'est différent que de l'écraser avec une autre branche. Heroku a probablement des protections en place pour empêcher la suppression de la branche principale.la source
-f
ou--force
, et il est toujours préférable de vous assurer que vous savez ce que vous faites lorsque vous forcez la poussée.La commande la plus sûre pour pousser différentes branches Git locales vers Heroku / master.
Remarque: Bien que vous puissiez pousser sans utiliser le -f, le -f (indicateur de force) est recommandé afin d'éviter les conflits avec les poussées des autres développeurs.
la source
Pour moi, ça marche,
source: - documents officiels
la source
Notez également que si vous utilisez le système git flow et votre branche de fonctionnalité peut être appelée
et avec une télécommande git appelée stagingtwo, alors la commande pour pousser vers heroku serait
la source
Vous devriez vérifier heroku_san , cela résout très bien ce problème.
Par exemple, vous pourriez:
Cela facilite également la rotation de nouvelles instances Heroku pour déployer une branche de sujet sur de nouveaux serveurs:
Et bien sûr, vous pouvez effectuer des tâches de râteau plus simples si vous faites quelque chose fréquemment.
la source
J'ai trouvé cela utile. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
la source
Heroku labs propose désormais un module complémentaire github qui vous permet de spécifier la branche à pousser.
Voir l'écriture de Heroku sur cette fonctionnalité bêta.
Vous devrez vous inscrire en tant que bêta-testeur pour le moment.
la source
Je pense que ça devrait être
push = refs/heads/*:refs/heads/*
au lieu...
la source