Woher weiß „git push heroku master“, wohin und wo man zu einem anderen Repo pusht?

88

Wenn Sie in ein auf Heroku gehostetes Repository pushen, müssen Sie den folgenden Befehl ausführen:

git push heroku master

Was tun herokuund masterin diesem Befehl angeben? Woher weiß Git, wohin er gehen soll? (der Git-Pfad)

Außerdem wusste ich nicht, dass ich heroku renameeine App umbenennen kann. Sagen wir also, ich habe den App-Namen trytryheroku verwendet und jetzt verwende ich ihn, heroku create real-thingaber wenn ich drücke, wird immer noch trytryheroku gepusht ... gibt es eine Möglichkeit, pushen zu können echte Sache stattdessen?

Sarah Wong
quelle

Antworten:

105

Der 'Heroku'-Teil ist der Name der Fernbedienung, die Sie eingerichtet haben. Wenn Sie eine Heroku-App zum ersten Mal erstellen, wird ein Git-Remote-Aufruf' Heroku 'erstellt, der auf Ihre Anwendung verweist. Wenn Sie in Ihrem Projekt' Git-Fernbedienung 'eingeben zeigt Ihnen die Remote-Endpunkte. Es gibt nichts, was Sie daran hindert, "Heroku" als Namen der Fernbedienung zu verwenden. Wenn Sie mehrere Umgebungen für Ihre Anwendung haben, haben Sie möglicherweise Fernbedienungen mit dem Namen "Produktion" oder "Staging".

Der 'Master'-Teil ist der lokale Zweig, den Sie an die Fernbedienung senden möchten. Wenn Sie in einem Feature-Zweig mit dem Namen "myfeature" entwickeln und diesen für Heroku bereitstellen möchten, würden Sie dies tun.

git push heroku myfeature:master

der zusätzliche: master hier sagt, schiebe meinen lokalen myfeatureZweig in den masterZweig auf der Fernbedienung - Hinweis: Heroku kann nur vom Master-Zweig aus bereitgestellt werden.

Wenn Sie eine App die Heroku git remote umbenennen wird url ändern - tun ein , git remote -v die Ihnen zeigen , die git Repo Ihre App verwenden, werden Sie wahrscheinlich benötigen , um Ihre alten Heroku Herkunft zu löschen und die neue hinzufügen, git remote rm herokudanngit remote add heroku git@newgitpathfromcontrolpanel

Um mehr über Git zu erfahren, würde ich dieses Buch empfehlen

John Beynon
quelle
Sie können die URL einer Fernbedienung mit git remote set-url <remote-name> <new-url>(Git 1.7.0 und höher) oder git config remote.<remote-name>.url <new-url>oder durch Bearbeiten .git/config(möglicherweise über git config -ein Git 1.6.3 und höher) aktualisieren .
Chris Johnsen
3
das war sehr sehr hilfreich. Vielen Dank
Diego Urenia
42

TEIL 1: "Woher weiß Git, wohin er gehen soll?"

Vor dem Ausführen des oben genannten Befehls:

$ git push heroku master

Es sind immer nur wenige andere Schritte auszuführen: Git und Heroku installieren, ein lokales Git-Repo erstellen, sich bei Heroku anmelden, Heroku über die Befehlszeile anmelden, Heroku-Handle für den Hosting-Punkt erstellen ( in TEIL 2 erläutert )

1. Ein lokales Git-Repository:

    $ 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. Melden Sie sich bei Heroku an (ed) und melden Sie sich über die Befehlszeile an:

$ 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

Durch Ausführen haben $ git push heroku masterSie den Code / die App an Heroku gesendet.


TEIL 2: Aber was zeigen Heroku und Meister an?

Es ist eher eine Git-Frage als Heroku - Heroku ist eine Hosting-Plattform, deren Bereitstellung von Git (Distributed Version Control System) abhängt.

Das Grundkonzept von 'Push' besteht darin, etwas (Datei, App, ..), das wir lokal (in unserer Arbeitsmaschine) haben, an einen anderen Ort zu verschieben, in diesem Fall in ein Remote-Repository (Remote-Computer).

In Git erstellen wir vor der Verwendung von 'push' eine Fernbedienung (Handle), die als Referenz auf ein Fernrepository (vollständige URL) dient. Verwenden Sie dazu den folgenden Befehl:

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

Die Grundstruktur des Befehls 'push' lautet:

$ git push <remote-name> <branch>

So $ git push heroku master also tatsächlich Ihren Code / Ihre App / Datei (von einem lokalen Git-Repo) zu einem Remote-Repo 'Heroku'.

Sie haben sich gefragt, wann diese 'Heroku'-Fernbedienung erstellt wurde. Sie wurde hinzugefügt, als Sie $ heroku create ausgeführt haben

$ 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

Beachten Sie die letzte Zeile " Git Remote Heroku hinzugefügt ".

Um es klarer zu machen, hier ein Git-Befehl zum Überprüfen / Ausgeben aller Fernbedienungen: $ git remote -v zeigt etwas Ähnliches wie das Folgende an

$ git remote -v
heroku     [email protected]:somerepo.git (fetch)
heroku     [email protected]:somerepo.git (push)

Wir können also davon ausgehen, dass der folgende Befehl (implizit) irgendwo ausgeführt wurde, als Sie $ heroku create erstellt haben , wodurch die Heroku-Fernbedienung für ein Heroku-Repo (URL) * erstellt wurde.

$ git remote add heroku [email protected]:somerepo.git
Nabeel Ahmed
quelle
11

Heroku wird als Teil des Heroku-Edelsteins benötigt, um den Push zu unterstützen, und Master ist einfach der Git-Zweig, den Sie drücken. Der Git weiß, wohin er pushen muss, da Sie eine Heroku-Anwendung erstellen. Der Push wird automatisch eingerichtet, was Sie durch Eingabe sehen können

git remote -v

Wenn Sie dies ändern müssen, entfernen Sie es mit git remote rm herokuund fügen Sie dann Ihre neue Anwendung mit hinzugit remote add heroku [email protected]:your-application-15.git

Will Ayd
quelle
Beachten Sie, dass der Remote-Zweig normalerweise unter demselben Namen wie der Zweig erstellt wird, den Sie verschieben. Dies kann jedoch geändert werden (Git Push Heroku Master: Mymaster zB oder über Confgi-Datei)
sehe
2
Diese Antwort ist falsch. herokuist der Name der Fernbedienung und ist völlig unabhängig vom Heroku-Edelstein.
Jergason
1

Genau wie du hatte ich auch Mühe, diese Kleinigkeiten von Git und Heroku zu verstehen, und ich war auch verwirrt. Aber jetzt habe ich ein bisschen Klarheit, um Ihre Frage kurz beantworten zu können.

Angenommen, Sie haben Git-Setup in Ihrem Projektverzeichnis. In Ihrem Projektordner befindet sich ein versteckter .git-Ordner, der eine Datei mit dem Namen "config" enthält, die alle Informationen zu Fernbedienungen enthält.

Fernbedienungen sind Ihre individuellen Repositories, die individuell nach Herkunft, Heroku, Inszenierung, Produkt usw. benannt sind.

In Ihrem Befehl steht heroku für das Repository, das Sie dem heroku-Projekt zugeordnet haben. Öffnen Sie die Konfigurationsdatei. Sie sehen die URL.

Wenn du rennst

git push heroku master

Sie fordern git auf, den Hauptzweig Ihres aktuellen Ursprungs-Repositorys in den Hauptzweig des Heroku-Repositorys zu verschieben

Ruhe alle Details sind bereits in anderen Antworten geteilt, also nicht wiederholen wollen. Dies ist also nach meinem Verständnis nur eine kurze Antwort. Ich hoffe es hilft.

Sameer
quelle
0

aber wenn ich drücke, drängt es immer noch auf trytryheroku ... gibt es eine Möglichkeit, stattdessen auf real zu pushen?

Ich habe die Antwort gefunden, die Sie bei Heroku interessieren könnte:

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

Auf diese Weise weiß Heroku, wohin er schieben muss!

iair
quelle