¿Cómo sabe "git push heroku master" dónde empujar y cómo empujar a un repositorio diferente?

92

Cuando se envía a un repositorio alojado en Heroku, se debe ejecutar el siguiente comando:

git push heroku master

¿Qué hacen herokue masterindican en este comando? ¿Cómo sabe git hacia dónde empujar? (el camino de git)

Además, no sabía que podía usar heroku renamepara cambiar el nombre de una aplicación, así que antes, digamos que estaba usando el nombre de la aplicación trytryheroku y ahora lo uso, heroku create real-thingpero si presiono, todavía empuja a trytryheroku ... ¿hay alguna manera de presionar para algo real en su lugar?

Sarah Wong
fuente

Respuestas:

107

La parte 'heroku' es el nombre del control remoto que ha configurado; cuando crea una aplicación heroku la primera vez que crea una llamada remota git 'heroku' apuntando a su aplicación, si escribe 'git remote' dentro de su proyecto, le mostrará los puntos finales remotos. No hay nada que le impida usar 'heroku' como nombre del control remoto; si tiene varios entornos para su aplicación, es posible que tenga controles remotos llamados producción o puesta en escena, por ejemplo.

La parte 'maestra' es la rama local que desea enviar al control remoto. Si desarrolla en una rama de características, por ejemplo, llamada 'myfeature' y desea implementarla en heroku, lo haría;

git push heroku myfeature:master

el adicional: master aquí dice empujar mi myfeaturerama local a la masterrama en el control remoto - nota: heroku solo se puede implementar desde la rama maestra.

Si cambia el nombre de una aplicación, la URL remota de heroku git cambiará; haga una acción git remote -v que le mostrará el repositorio de git que está usando su aplicación, probablemente tendrá que eliminar su origen heroku anterior y agregar el nuevo, git remote rm herokuluegogit remote add heroku git@newgitpathfromcontrolpanel

Para obtener más información sobre Git, recomendaría este libro.

John Beynon
fuente
Puede actualizar la URL de un control remoto con git remote set-url <remote-name> <new-url>(Git 1.7.0 y posterior) o git config remote.<remote-name>.url <new-url>, o editando .git/config(posiblemente a través git config -ede Git 1.6.3 y posterior).
Chris Johnsen
3
eso fue muy, muy útil. Gracias
Diego Urenia 27/11/12
43

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: [email protected]
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 masterrealidad, 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/ | [email protected]: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     [email protected]:somerepo.git (fetch)
heroku     [email protected]: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 [email protected]:somerepo.git
Nabeel Ahmed
fuente
12

Se requiere heroku como parte de la gema heroku para ayudar con el empuje, y maestro es simplemente la rama de git que estás empujando. El git sabe a dónde empujar porque creas una aplicación heroku, el empujón se configura automáticamente, lo que puedes ver escribiendo

git remote -v

si necesita cambiar eso, elimínelo con git remote rm herokuy luego agregue su nueva aplicación congit remote add heroku [email protected]:your-application-15.git

Will Ayd
fuente
tenga en cuenta que la rama remota normalmente se creará con el mismo nombre que la rama que está empujando. Esto se puede cambiar, aunque (maestro heroku git push: mymaster por ejemplo, o por medio de confgi archivo)
sehe
2
Esta respuesta es falsa. herokues el nombre del control remoto y no tiene ninguna conexión con la gema heroku.
jergason
1

Al igual que tú, también luché por comprender estos meollo de git y heroku y también estaba confundido. Pero ahora tengo un poco de claridad para poder responder brevemente a tu pregunta.

Suponiendo que tiene la configuración de git en el directorio de su proyecto. Existe una carpeta oculta .git en la carpeta de su proyecto que contiene un archivo llamado "config" que contiene toda la información sobre los controles remotos.

Los controles remotos son sus repositorios individuales nombrados individualmente como origen, heroku, puesta en escena, prod, etc.

En su comando, heroku representa el repositorio que ha asignado al proyecto heroku. Abra el archivo de configuración y verá la URL.

Cuando corres

git push heroku master

le está diciendo a git que envíe la rama maestra de su repositorio de origen actual a la rama maestra del repositorio heroku

Descanse, todos los detalles ya están compartidos en otras respuestas, así que no quiera repetir. Así que esta es solo una respuesta breve según tengo entendido. Espero eso ayude.

Sameer
fuente
0

pero si presiono, todavía empuja a trytryheroku ... ¿hay alguna manera de presionar a algo real?

Encontré la respuesta que podría interesarte en heroku's:

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 esa manera, heroku sabrá dónde empujar!

iair
fuente