69 votes

heroku et github en même temps

Je comprends donc que Heroku fonctionne comme un dépôt Git, mais disons que je veux utiliser Github comme dépôt. Comment puis-je le configurer de sorte que j'ai deux dépôts et que les deux sont synchronisés ?

101voto

Dan Hoerst Points 3353

Vous pouvez avoir plusieurs télécommandes sur une installation git. Vous auriez une télécommande github, et une télécommande heroku.

En supposant que vous avez déjà configuré github, alors vous poussez probablement vers github avec quelque chose comme :

git push origin master

origin est votre télécommande, et master est votre branche.

Suivez les instructions dans Démarrer avec Heroku choisissez la langue de votre choix et poursuivez le tutoriel. Ce tutoriel suppose que vous avez déjà configuré github, et vous montrera comment créer votre heroku à distance - via heroku create .

Vous poussez ensuite sur github comme d'habitude, et vous poussez sur heroku via :

git push heroku master

Le même format s'applique - heroku est votre télécommande, et master est votre branche. Vous n'écrasez pas votre télécommande Github ici, vous en ajoutez une autre, donc vous pouvez toujours faire les deux poussées via un seul commit avec un flux de travail tel que :

git add .
git commit -m "Going to push to Heroku and Git"
git push origin master -- push to Github Master branch
git push heroku master -- push to Heroku

11 votes

Ce n'est pas "deux fois le travail". Il s'agit de deux poussées accomplissant deux actions complètement distinctes. L'un pousse vers Github et l'autre vers Heroku. Si vous n'avez besoin de pousser que vers l'un ou l'autre, alors vous n'avez besoin de faire qu'un seul push.

3 votes

@DanHoerst est-il possible d'avoir un seul dépôt ? Je veux dire que nous pouvons pousser vers le dépôt Heroku et faire en sorte que le dépôt Github se mette à jour lui-même ? En d'autres termes, pouvons-nous avoir une copie du dépôt Heroku sur Github ?

3 votes

@aandis Heroku prend désormais en charge l'intégration Github, ce qui vous permet d'utiliser uniquement votre dépôt Github si c'est ce que vous souhaitez : devcenter.heroku.com/articles/github-integration

41voto

caffinatedmonkey Points 1130

Si vous voulez pouvoir pousser et tirer vers plusieurs télécommandes :

Ajoutez-les d'abord :

git remote add origin <github repo>
git remote add heroku git@heroku.com:<app name>.git

Puis push

git push origin master
git push heroku master

Si vous voulez pousser sur les deux télécommandes en même temps :

Modifiez votre fichier de configuration comme suit origin pointe à la fois vers heroku et github :

git config -e

Ajouter/remplacer :

[remote "origin"]
    url = git@github.com:username/somerepo.git
    url = ssh://git@bitbucket.org/username/somerepo.git

Puisque vous utilisez github, vous pouvez vous intégrer à heroku en naviguant vers :

https://dashboard.heroku.com/apps/<app name>/settings#github-repo

et en ajoutant le nom de votre référentiel.

github integration

Si vous voulez pousser automatiquement vers heroku après avoir commis sur GitHub :

vous devrez utiliser une plateforme d'intégration continue comme TravisCI .

Voici les étapes à suivre pour que cela fonctionne. Faites attention à ce que vous mettez en production, assurez-vous que cela fonctionne avant de le déployer. Chaque méthode a ses avantages et ses inconvénients.

23voto

Andrew Gorcester Points 10328

Je pense que c'est en fait le cas recommandé ; la fonction de dépôt git de Heroku est vraiment destinée au déploiement et non à la gestion du code.

Utilisez simplement github pour gérer votre code comme d'habitude, mais poussez en plus vers le dépôt git de Heroku lorsque vous êtes prêt à déployer. Il n'est pas nécessaire de les synchroniser à l'aide d'outils automatisés, etc., car vous voulez être en mesure de pousser vers votre dépôt github sans déployer, par exemple pour pouvoir sauvegarder ou collaborer sur des fonctionnalités non terminées ou maintenir des environnements distincts pour la mise en place et la production.

2 votes

Vous pouvez également utiliser && pour enchaîner les commandes, par exemple : git push origin master && git push heroku master. Cela vous permettra de pousser sur les deux plateformes facilement.

0 votes

@Andrew Gorcester Bonne explication. Mon cas est le même, je travaille sur 2 ordinateurs, donc je pousse sur GitHub et clone sur un autre ordinateur. Je n'ai pas besoin de pousser sur Heroku tant qu'il n'y a pas de nouveautés dans l'application.

17voto

Richard Brown Points 7716

Je fais cela assez souvent. Je crée un site pour Heroku mais je veux garder mes sources dans Github à des fins d'archivage. Je configure deux télécommandes :

git remote add origin <github repo>

et

git remote add heroku <heroku repo>

Alors vous pouvez juste git push origin master et ensuite git push heroku master . Heroku vous permet également d'associer un repo github afin de voir les diffs de commit.

1 votes

Ne devrait-il pas être git remote add au lieu de git add remote ?

1 votes

J'ai installé deux télécommandes ?

0 votes

@charlesross oui, car l'un est pour la sauvegarde, la synchronisation et le travail (GitHub). Heroku est juste pour l'application en cours d'exécution

13voto

chester1000 Points 591

Puisque personne ne l'a mentionné auparavant. Git vous permet maintenant d'ajouter plusieurs urls à chaque remote. Il suffit de le faire comme ceci :

cela ajoutera fetch et push de github :

git remote add origin git@github.com:yourName/yourGithubRepo.git

ceci remplacera github push avec heroku push :

git remote set-url origin --push --add git@heroku.com:yourHerokuRepo.git

ceci réajoute github push :

git remote set-url origin --push --add git@github.com:yourName/yourGithubRepo.git

et c'est un résultat final :

$ git remote -v
origin  git@github.com:yourName/yourGithubRepo.git (fetch)
origin  git@heroku.com:yourHerokuRepo.git (push)
origin  git@github.com:yourName/yourGithubRepo.git (push)

Après ça, il suffit de courir :

git push

Si, au lieu de travailler, il dit quelque chose sur la mise en place en amont, tapez d'abord ceci :

git push --set-upstream origin master

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X