Comment «git push heroku master» sait-il où pousser et comment pousser vers un dépôt différent?


91

Lors du transfert vers un référentiel hébergé sur Heroku, il faut exécuter la commande suivante:

git push heroku master

Que font herokuet masterindiquent dans cette commande? Comment git sait-il où pousser? (le chemin git)

De plus, je ne savais pas que je pouvais utiliser heroku renamepour renommer une application, alors avant, disons que j'utilisais le nom de l'application trytryheroku et que j'utilise maintenant, heroku create real-thingmais si je pousse, cela pousse toujours à trytryheroku ... y a-t-il un moyen de pousser vers chose réelle à la place?

Réponses:


106

La partie 'heroku' est le nom de la télécommande que vous avez configurée - lorsque vous créez une application heroku la première fois qu'elle crée un appel à distance git 'heroku' pointant sur votre application - si vous tapez 'git remote' dans votre projet, il vous montrera les points de terminaison distants. Rien ne vous empêche d'utiliser «heroku» comme nom de la télécommande - si vous avez plusieurs environnements pour votre application, vous pouvez avoir des télécommandes nommées production ou mise en scène, par exemple.

La partie «maître» est la branche locale que vous souhaitez pousser vers la télécommande. Si vous développez dans une branche de fonctionnalités par exemple nommée «myfeature» et que vous souhaitez déployer cela sur heroku, vous le feriez;

git push heroku myfeature:master

le supplémentaire: maître ici dit pousser ma myfeaturebranche locale dans la masterbranche sur la télécommande - note: heroku ne peut déployer qu'à partir de la branche maître.

Si vous renommez une application, l'URL de la télécommande heroku git changera - faites un git remote -v qui vous montrera le repo git que votre application utilise, vous devrez probablement supprimer votre ancienne origine heroku et ajouter la nouvelle, git remote rm herokupuisgit remote add heroku git@newgitpathfromcontrolpanel

Pour en savoir plus sur Git, je recommanderais ce livre


Vous pouvez mettre à jour l'URL d'une télécommande avec git remote set-url <remote-name> <new-url>(Git 1.7.0 et versions ultérieures), ou git config remote.<remote-name>.url <new-url>, ou en éditant .git/config(éventuellement via git config -edans Git 1.6.3 et versions ultérieures).
Chris Johnsen

3
c'était très très utile. Merci
Diego Urenia

43

PARTIE 1: "Comment git sait-il où pousser?"

Avant d'exécuter la commande mentionnée ci-dessus:

$ git push heroku master

Il y a toujours quelques autres étapes à exécuter: installer Git et Heroku, créer un référentiel Git local, s'inscrire à heroku, se connecter à heroku via la ligne de commande, créer un identifiant heroku au point d'hébergement ( expliqué dans la PARTIE 2 )

1. Un référentiel Git local:

    $ git init
    Initialized empty Git repository in .git/
    $ git add .
    $ git commit -m "my first commit"
    Created initial commit 5df2d09: my first commit
     44 files changed, 8393 insertions(+), 0 deletions(-)
     create mode 100644 README
     create mode 100644 Procfile
     create mode 100644 app/controllers/source_file
    ...

2. Vous êtes abonné (e) à Heroku et connecté via la ligne de commande:

$ heroku login
Enter your Heroku credentials.
Email: user@example.com
Password:
Could not find an existing public key.
Would you like to generate one? [Yn]
Generating new SSH public key.
Uploading ssh public key /Users/adam/.ssh/id_rsa.pub

Donc en courant $ git push heroku master vous avez poussé le code / l'application vers Heroku.


PARTIE 2: mais qu'est-ce que heroku et maître ?

C'est plus une question Git que Heroku - Heroku est une plate-forme d'hébergement, qui dépend de Git (Distributed Version Control System) pour le déploiement.

Le concept de base de 'push' est de pousser quelque chose (fichier, application, ..) que nous avons localement (dans notre machine de travail) vers un autre endroit, dans ce cas vers un référentiel distant (machine distante).

Dans Git, avant d'utiliser 'push', nous créons un remote (handle) qui agit comme une référence à un référentiel distant (URL complète), nous le faisons en utilisant la commande suivante:

$ git remote add <remote-name-of-our-choice> <URL-where-you-be-pushing-yourapp>

La structure de base de la commande 'push' est:

$ git push <remote-name> <branch>

Il en $ git push heroku masterva de même pour le transfert de votre code / application / fichier (à partir d'un dépôt Git local) vers un dépôt distant 'heroku'.

vous vous demandez quand cette télécommande 'heroku' a été créée, elle a été ajoutée lorsque vous avez exécuté $ heroku create

$ heroku create
Creating stark-fog-398... done, stack is cedar
http://stark-fog-398.herokuapp.com/ | git@heroku.com:stark-fog-398.git
Git remote heroku added

Notez la dernière ligne " Git remote heroku ajouté ".

pour le rendre plus clair, voici une commande Git pour vérifier / sortir toutes les télécommandes: $ git remote -v affichera quelque chose de similaire à ce qui suit

$ git remote -v
heroku     git@heroku.com:somerepo.git (fetch)
heroku     git@heroku.com:somerepo.git (push)

Nous pouvons donc supposer que la commande suivante a été exécutée (implicitement) quelque part, lorsque vous avez créé $ heroku , créant ainsi la télécommande heroku vers un repo heroku (url) *

$ git remote add heroku git@heroku.com:somerepo.git

12

heroku est requis dans le cadre de la gemme heroku pour aider à la poussée, et master est simplement la branche git que vous poussez. Le git sait où pousser parce que vous créez une application heroku, le push est automatiquement configuré, ce que vous pouvez voir en tapant

git remote -v

si vous avez besoin de changer cela, supprimez-le avec git remote rm heroku, puis ajoutez votre nouvelle application avecgit remote add heroku git@heroku.com:your-application-15.git


notez que la branche distante sera normalement créée sous le même nom que la branche que vous poussez. Cela peut être changé, bien que (maître git push Heroku: mymaster par exemple, ou via un fichier confgi)
sehe

2
Cette réponse est fausse. herokuest le nom de la télécommande, et est totalement déconnecté de la gemme heroku.
jergason du


1

Tout comme vous, j'ai également eu du mal à comprendre ces détails de git et d'heroku et j'étais également confus. Mais maintenant, j'ai un peu de clarté pour pouvoir répondre brièvement à votre question.

En supposant que vous avez git setup sur votre répertoire de projet. Il existe un dossier caché .git dans votre dossier de projet qui contient un fichier nommé "config" qui contient toutes les informations sur les télécommandes.

Les télécommandes sont vos référentiels individuels nommés individuellement comme origine, heroku, mise en scène, production, etc.

Dans votre commande, heroku représente le référentiel que vous avez mappé au projet heroku. Ouvrez le fichier de configuration, vous verrez l'URL.

Quand tu cours

git push heroku master

vous dites à git de pousser la branche principale de votre dépôt d'origine actuel vers la branche principale du dépôt heroku

Reste que tous les détails sont déjà partagés dans d'autres réponses, alors ne voulez pas répéter. Ce n'est donc qu'une courte réponse selon ce que je comprends. J'espère que ça aide.


0

mais si je pousse, cela pousse toujours à essayerheroku ... y a-t-il un moyen de pousser vers la réalité à la place?

J'ai trouvé la réponse qui pourrait vous intéresser chez heroku:

https://dashboard.heroku.com/apps/NAMEOFYOURAPP/deploy/heroku-git

$ cd my-project/
$ git init
$ heroku git:remote -a nameofyourapp

$ git add .
$ git commit -am "make it better"
$ git push heroku master

De cette façon, heroku saura où pousser!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.