Come fa "git push heroku master" a sapere dove eseguire il push e come eseguire il push in un repository diverso?


92

Quando si invia a un repository ospitato su Heroku, è necessario eseguire il seguente comando:

git push heroku master

Cosa herokue masterindicare in questo comando? Come fa git a sapere dove inviare il push? (il percorso git)

Inoltre, non sapevo di poter usare heroku renameper rinominare un'app, quindi prima, diciamo che stavo usando il nome dell'app trytryheroku e ora lo uso heroku create real-thingma se spingo, spinge ancora a trytryheroku ... c'è un modo per spingere a cosa vera invece?

Risposte:


107

La parte "heroku" è il nome del telecomando che hai configurato: quando crei un'app heroku la prima volta, viene creata una chiamata remota git "heroku" che punta alla tua applicazione - se digiti "git remote" all'interno del tuo progetto, ti mostrerà gli endpoint remoti. Non c'è niente che ti blocchi nell'usare "heroku" come nome del telecomando: se hai più ambienti per la tua applicazione potresti avere telecomandi denominati produzione o staging, ad esempio.

La parte "master" è il ramo locale che desideri inviare al telecomando. Se sviluppi in un ramo di funzionalità, ad esempio denominato "myfeature", e desideri distribuirlo a heroku, lo faresti;

git push heroku myfeature:master

l'ulteriore: master qui sta dicendo spingere il mio myfeatureramo locale nel masterramo sul telecomando - nota: heroku può distribuire solo dal ramo master.

Se rinomini un'app, l'URL remoto di heroku git cambierà: fai una cosa git remote -v che ti mostrerà il repository git che la tua app sta utilizzando, probabilmente dovrai eliminare la tua vecchia origine heroku e aggiungere quella nuova, git remote rm herokuquindigit remote add heroku git@newgitpathfromcontrolpanel

Per saperne di più su Git consiglierei questo libro


Puoi aggiornare l'URL di un telecomando con git remote set-url <remote-name> <new-url>(Git 1.7.0 e versioni successive), o git config remote.<remote-name>.url <new-url>o modificando .git/config(possibilmente tramite git config -eGit 1.6.3 e versioni successive).
Chris Johnsen

3
è stato molto molto utile. Grazie
Diego Urenia

43

PARTE 1: "Come fa git a sapere dove spingere?"

Prima di eseguire il comando sopra indicato:

$ git push heroku master

Ci sono sempre pochi altri passaggi da eseguire: installazione di Git e Heroku, creazione di un repository Git locale, registrazione a heroku, accesso a heroku tramite riga di comando, creazione dell'handle heroku al punto di hosting ( spiegato nella PARTE 2 )

1. Un repository Git locale:

    $ 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. Registrati (ed) per Heroku e accedi tramite riga di comando:

$ 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

Quindi eseguendo $ git push heroku masterhai inviato il codice / l'app a Heroku.


PARTE 2: ma cosa indicano heroku e master ?

È più una questione di Git che di Heroku: Heroku è una piattaforma di hosting, che dipende da Git (Distributed Version Control System) per la distribuzione.

Il concetto di base di "push" è spingere qualcosa (file, app, ..) che abbiamo localmente (nella nostra macchina funzionante) da qualche altra parte, in questo caso in un repository remoto (macchina remota).

In Git prima di utilizzare 'push' creiamo un remoto (handle) che funge da riferimento a un repository remoto (URL completo), lo facciamo utilizzando il seguente comando:

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

La struttura di base del comando 'push' è:

$ git push <remote-name> <branch>

Quindi in $ git push heroku masterrealtà sta spingendo il tuo codice / app / file (da un repository Git locale) a un repository remoto "heroku".

chiedendomi quando è stato creato questo telecomando "heroku", è stato aggiunto quando hai eseguito $ 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

Notare l'ultima riga " Git remote heroku added ".

per renderlo più chiaro, ecco un comando Git per controllare / visualizzare tutti i telecomandi: $ git remote -v mostrerà qualcosa di simile al seguente

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

Quindi possiamo supporre che il seguente comando sia stato eseguito (implicitamente) da qualche parte, quando hai creato $ heroku , quindi creando il telecomando heroku in qualche repository heroku (url) *

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

12

heroku è richiesto come parte della gemma heroku per assistere con la spinta, e master è semplicemente il ramo git che stai spingendo. Il git sa dove inviare il push perché crei un'applicazione heroku, il push viene impostato automaticamente, che puoi vedere digitando

git remote -v

se è necessario modificarlo, rimuoverlo con git remote rm herokue quindi aggiungere la tua nuova applicazione congit remote add heroku git@heroku.com:your-application-15.git


nota che il ramo remoto verrà normalmente creato con lo stesso nome del ramo che stai spingendo. Questo può essere cambiato, però (git push heroku master: mymaster eg, o tramite file confgi)
vedi

2
Questa risposta non è vera. herokuè il nome del telecomando, ed è totalmente scollegato dalla gemma heroku.
jergason,


1

Proprio come te, ho anche lottato per capire queste cose grintose di git e heroku e anch'io ero confuso. Ma ora ho un po 'di chiarezza per poter rispondere in breve alla tua domanda.

Supponendo che tu abbia git setup nella directory del tuo progetto. Esiste una cartella nascosta .git nella cartella del progetto che contiene un file denominato "config" che contiene tutte le informazioni sui telecomandi.

I telecomandi sono i tuoi repository individuali denominati individualmente come origin, heroku, staging, prod ecc ..

Nel tuo comando heroku sta per il repository che hai mappato al progetto heroku. Apri il file di configurazione vedrai l'URL.

Quando corri

git push heroku master

stai dicendo a git di inviare il master branch del tuo attuale repository di origine al master branch del repository heroku

Resto tutti i dettagli sono già condivisi in altre risposte, quindi non voglio ripetere. Quindi questa è solo una breve risposta per la mia comprensione. Spero che sia d'aiuto.


0

ma se spingo, spinge comunque a provare a provare a cercare ... c'è un modo per spingere invece a cose reali?

Ho trovato la risposta che potresti essere interessato a 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

In questo modo, heroku saprà dove spingere!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.