PARTE 1: "¿Cómo sabe git hacia dónde empujar?"
Antes de ejecutar el comando mencionado anteriormente:
$ git push heroku master
Siempre hay algunos otros pasos para ejecutar: instalar Git y Heroku, crear un repositorio de Git local, registrarse en heroku, iniciar sesión en heroku a través de la línea de comandos, crear un identificador de heroku en el punto de alojamiento ( explicado en la PARTE 2 )
1. Un repositorio de 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. Inscríbase (ed) en Heroku e inicie sesión a través de la línea de comandos:
$ 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
Entonces, al ejecutarlo $ git push heroku master
, ha enviado el código / aplicación a Heroku.
PARTE 2: ¿pero que indican heroku y master ?
Es más una cuestión de Git que de Heroku: Heroku es una plataforma de alojamiento que depende de Git (Sistema de control de versiones distribuidas) para su implementación.
El concepto básico de 'empujar' es empujar algo (archivo, aplicación, ..) que tenemos localmente (en nuestra máquina de trabajo) a otro lugar, en este caso a un repositorio remoto (máquina remota).
En Git antes de usar 'push' creamos un control remoto (handle) que actúa como referencia a un repositorio remoto (URL completa), lo hacemos usando el siguiente comando:
$ git remote add <remote-name-of-our-choice> <URL-where-you-be-pushing-yourapp>
La estructura básica del comando 'push' es:
$ git push <remote-name> <branch>
Entonces, en $ git push heroku master
realidad, está empujando su código / aplicación / archivo (desde algún repositorio de Git local) a un repositorio remoto 'heroku'.
preguntándose cuándo se creó este control remoto 'heroku', se agregó cuando ejecutó $ 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
Fíjate en la última línea " Git remote heroku added ".
para que quede más claro, aquí hay un comando de Git para verificar / mostrar todos los controles remotos: $ git remote -v mostrará algo similar a lo siguiente
$ git remote -v
heroku git@heroku.com:somerepo.git (fetch)
heroku git@heroku.com:somerepo.git (push)
Entonces podemos suponer que el siguiente comando se ejecutó (implícitamente) en algún lugar, cuando hiciste $ heroku create , por lo tanto, creaste el control remoto de heroku en algún repositorio de heroku (url) *
$ git remote add heroku git@heroku.com:somerepo.git
git remote set-url <remote-name> <new-url>
(Git 1.7.0 y posterior) ogit config remote.<remote-name>.url <new-url>
, o editando.git/config
(posiblemente a travésgit config -e
de Git 1.6.3 y posterior).