Como o “git push heroku master” sabe para onde enviar e como enviar para um repo diferente?

91

Ao enviar para um repositório hospedado no Heroku, deve-se executar o seguinte comando:

git push heroku master

O que fazer herokue masterindicar neste comando? Como o git sabe para onde ir? (o caminho git)

Além disso, não sabia que podia usar heroku renamepara renomear um aplicativo, então, antes, digamos que eu estava usando o nome do aplicativo trytryheroku e agora uso, heroku create real-thingmas se eu empurro, ele ainda empurra para trytryheroku ... há uma maneira de enviar para real em vez disso?

Sarah Wong
fonte

Respostas:

106

A parte 'heroku' é o nome do controle remoto que você configurou - quando você cria um aplicativo heroku pela primeira vez, ele cria uma chamada remota git 'heroku' apontando para seu aplicativo - se você digitar 'git remote' dentro de seu projeto, irá mostrar-lhe os terminais remotos. Não há nada que o impeça de usar 'heroku' como o nome do controle remoto - se você tiver vários ambientes para seu aplicativo, pode ter controles remotos chamados de produção ou teste, por exemplo.

A parte 'master' é o branch local que você deseja enviar para o remoto. Se você desenvolver em um branch de recurso, por exemplo, denominado 'myfeature' e quiser implantá-lo no heroku, você o faria;

git push heroku myfeature:master

o adicional: master aqui está dizendo para empurrar meu myfeaturebranch local para o masterbranch no remoto - nota: o heroku só pode implantar do branch master.

Se você renomear um aplicativo, o url remoto do heroku git mudará - faça um git remote -v que mostrará o repositório git que seu aplicativo está usando, você provavelmente precisará excluir sua origem antiga do heroku e adicionar a nova, git remote rm herokuentãogit remote add heroku git@newgitpathfromcontrolpanel

Para aprender mais sobre o Git, eu recomendaria este livro

John Beynon
fonte
Você pode atualizar a URL de um remoto com git remote set-url <remote-name> <new-url>(Git 1.7.0 e posterior), ou git config remote.<remote-name>.url <new-url>, ou editando .git/config(possivelmente através git config -edo Git 1.6.3 e posterior).
Chris Johnsen,
3
isso foi muito útil. Obrigado
Diego Urenia
43

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: [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

Então, ao executar $ git push heroku mastervocê 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 masterocorre 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/ | [email protected]: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     [email protected]:somerepo.git (fetch)
heroku     [email protected]: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 [email protected]:somerepo.git
Nabeel Ahmed
fonte
12

heroku é necessário como parte da joia heroku para auxiliar no push, e master é simplesmente o branch git que você está empurrando. O git sabe para onde enviar porque você cria um aplicativo heroku e o push é configurado automaticamente, que você pode ver digitando

git remote -v

se você precisar mudar isso, remova-o com git remote rm herokue, em seguida, adicione seu novo aplicativo comgit remote add heroku [email protected]:your-application-15.git

Will Ayd
fonte
observe que o branch remoto normalmente será criado com o mesmo nome do branch que você está empurrando. No entanto, isso pode ser alterado (git push heroku master: mymaster eg, ou via arquivo confgi)
ver
2
Esta resposta não é verdadeira. herokué o nome do controle remoto e está totalmente desconectado da joia heroku.
jergason
1

Assim como você, eu também me esforcei para entender esses detalhes do git e do heroku e fiquei confuso também. Mas agora tenho um pouco de clareza para responder resumidamente à sua pergunta.

Supondo que você tenha git setup no diretório do projeto. Existe uma pasta oculta .git na pasta do seu projeto que contém um arquivo chamado "config" que contém todas as informações sobre controles remotos.

Remotos são seus repositórios individuais nomeados individualmente como origin, heroku, staging, prod etc.

Em seu comando, heroku representa o repositório que você mapeou para o projeto heroku. Abra o arquivo de configuração e você verá a URL.

Quando você corre

git push heroku master

você está dizendo ao git para enviar o branch master do repositório de origem atual para o branch master do repositório heroku

Resto todos os detalhes já estão compartilhados em outras respostas, então não quero repetir. Portanto, esta é apenas uma resposta curta pelo meu entendimento. Espero que ajude.

Sameer
fonte
0

mas se eu empurrar, ele ainda empurra para trytryheroku ... há uma maneira de empurrar para a realidade?

Eu encontrei a resposta que você pode estar interessado no 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

Dessa forma, o heroku saberá onde empurrar!

iair
fonte