PARTE 1: "Como o git sabe para onde ir?"
Antes de executar o comando mencionado acima:
$ git push heroku master
Sempre há algumas outras etapas a serem executadas: instalação do Git e do Heroku, criação de um repositório Git local, inscrição no heroku, login do heroku via linha de comando, criação do manipulador do heroku para o ponto de hospedagem ( explicado na PARTE 2 )
1. Um repositório 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. Ter inscrição (ed) para Heroku e logado via linha de 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
Então, ao executar $ git push heroku master
você enviou o código / aplicativo para o Heroku.
PARTE 2: mas o que heroku e mestre indicam?
É mais uma questão de Git do que Heroku - Heroku é uma plataforma de hospedagem, que depende do Git (Sistema de Controle de Versão Distribuída) para implantação.
O conceito básico de 'push' é enviar alguma coisa (arquivo, aplicativo, ..) que temos localmente (em nossa máquina de trabalho) para outro lugar, neste caso, para um repositório remoto (máquina remota).
No Git, antes de usar 'push', criamos um remoto (identificador) que atua como uma referência para um repositório remoto (URL completo), fazemos isso usando o seguinte comando:
$ git remote add <remote-name-of-our-choice> <URL-where-you-be-pushing-yourapp>
A estrutura básica do comando 'push' é:
$ git push <remote-name> <branch>
O mesmo $ git push heroku master
ocorre com o envio de seu código / aplicativo / arquivo (de algum repositório Git local) para um repositório remoto 'heroku'.
perguntando-se quando este controle remoto 'heroku' foi criado, ele foi adicionado quando você executou $ 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
Observe a última linha " Git remote heroku adicionado ".
para deixar mais claro, aqui está um comando Git para verificar / produzir todos os remotos: $ git remote -v exibirá algo semelhante ao seguinte
$ git remote -v
heroku git@heroku.com:somerepo.git (fetch)
heroku git@heroku.com:somerepo.git (push)
Portanto, podemos supor que o seguinte comando foi executado (implicitamente) em algum lugar, quando você fez $ heroku create , criando, portanto, o heroku remoto para algum repo (url) heroku *
$ git remote add heroku git@heroku.com:somerepo.git
git remote set-url <remote-name> <new-url>
(Git 1.7.0 e posterior), ougit config remote.<remote-name>.url <new-url>
, ou editando.git/config
(possivelmente atravésgit config -e
do Git 1.6.3 e posterior).