Skąd „git push heroku master” wie, gdzie należy nacisnąć i jak przejść do innego repozytorium?


92

W przypadku wypychania do repozytorium hostowanego na Heroku należy wykonać następujące polecenie:

git push heroku master

Co robisz herokui co masterwskazuje w tym poleceniu? Skąd git wie, gdzie naciskać? (ścieżka git)

Nie wiedziałem też, że mogę heroku renamezmienić nazwę aplikacji, więc wcześniej powiedzmy, że używam nazwy aplikacji trytryheroku, a teraz używam, heroku create real-thingale jeśli nacisnę, nadal wypycham do trytryheroku ... czy jest sposób, aby naciskać zamiast tego prawdziwa?

Odpowiedzi:


107

Część `` heroku '' to nazwa pilota, który skonfigurowałeś - kiedy tworzysz aplikację heroku po raz pierwszy tworzy ona zdalne wywołanie git `` heroku '' wskazujące na twoją aplikację - jeśli wpiszesz `` git remote '' w projekcie pokaże zdalne punkty końcowe. Nic nie ogranicza Cię do używania „heroku” jako nazwy pilota - jeśli masz wiele środowisk dla swojej aplikacji, możesz mieć na przykład piloty nazwane produkcyjnie lub przejściowo.

Część „główna” to lokalna gałąź, którą chcesz przekazać do pilota. Jeśli tworzysz w gałęzi funkcji, na przykład o nazwie „mojafunkcja” i chcesz ją wdrożyć w heroku, zrób to;

git push heroku myfeature:master

dodatkowe: master mówi tutaj, wrzuć moją lokalną myfeaturegałąź do mastergałęzi na zdalnym - uwaga: heroku może wdrożyć tylko z gałęzi głównej.

Jeśli zmienisz nazwę aplikacji, zmieni się zdalny adres URL heroku git - wykonaj polecenie, git remote -v które pokaże repozytorium git, z którego korzysta Twoja aplikacja, prawdopodobnie będziesz musiał usunąć stare źródło heroku i dodać nowe, git remote rm herokua następniegit remote add heroku git@newgitpathfromcontrolpanel

Aby dowiedzieć się więcej o Git, polecam książkę


Możesz zaktualizować adres URL pilota za pomocą git remote set-url <remote-name> <new-url>(Git 1.7.0 i nowsze) lub git config remote.<remote-name>.url <new-url>, lub edytując .git/config(prawdopodobnie przez git config -eGit 1.6.3 i nowsze).
Chris Johnsen,

3
to było bardzo pomocne. Dziękuję
Diego Urenia

43

CZĘŚĆ 1: „Skąd git wie, gdzie należy naciskać?”

Przed wykonaniem powyższego polecenia:

$ git push heroku master

Zawsze jest kilka innych kroków do wykonania: instalacja Git i Heroku, utworzenie lokalnego repozytorium Git, zarejestrowanie się w heroku, zalogowanie się do heroku za pomocą wiersza poleceń, utworzenie uchwytu heroku do punktu hostingu ( wyjaśnione w CZĘŚCI 2 )

1. Lokalne repozytorium Git:

    $ 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. Zarejestruj się (ed) w Heroku i zaloguj z linii poleceń:

$ 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

Tak więc, uruchamiając $ git push heroku master, przekazałeś kod / aplikację do Heroku.


CZĘŚĆ 2: ale na co wskazuje heroku i master ?

To bardziej kwestia Gita niż Heroku - Heroku to platforma hostingowa, której wdrożenie opiera się na Git (rozproszony system kontroli wersji).

Podstawową koncepcją „wypychania” jest wysyłanie czegoś (pliku, aplikacji,…), które mamy lokalnie (na naszej działającej maszynie) do innego miejsca, w tym przypadku do zdalnego repozytorium (zdalnej maszyny).

W Git przed użyciem 'push' tworzymy zdalny uchwyt (uchwyt), który działa jako odniesienie do zdalnego repozytorium (pełny adres URL), robimy to za pomocą następującego polecenia:

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

Podstawowa struktura polecenia „push” to:

$ git push <remote-name> <branch>

Tak $ git push heroku masternaprawdę jest to przekazywanie kodu / aplikacji / pliku (z lokalnego repozytorium Git) do zdalnego repozytorium „heroku”.

Zastanawiasz się, kiedy ten pilot „heroku” został utworzony, został dodany po wykonaniu polecenia $ 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

Zwróć uwagę na ostatnią linię „ Dodano zdalne heroku Git ”.

aby było jaśniej, oto polecenie Git, aby sprawdzić / wyprowadzić wszystkie piloty: $ git remote -v wyświetli coś podobnego do następującego

$ git remote -v
heroku     git@heroku.com:somerepo.git (fetch)
heroku     git@heroku.com:somerepo.git (push)

Więc możemy założyć, że następujące polecenie zostało wykonane (niejawnie) gdzieś, kiedy zrobiłeś $ heroku create , stąd tworzenie pilota heroku do jakiegoś repozytorium heroku (url) *

$ git remote add heroku git@heroku.com:somerepo.git

12

Heroku jest wymagane jako część klejnotu heroku, aby pomóc w pchaniu, a master to po prostu gałąź git, którą pchasz. Git wie, dokąd pchnąć, ponieważ tworzysz aplikację heroku, push jest automatycznie konfigurowany, co możesz zobaczyć wpisując

git remote -v

jeśli chcesz to zmienić, usuń go za pomocą, git remote rm herokua następnie dodaj nową aplikację za pomocągit remote add heroku git@heroku.com:your-application-15.git


Zwróć uwagę, że gałąź zdalna będzie normalnie tworzona pod taką samą nazwą jak gałąź, którą pchasz. Można to zmienić, choć (GIT wypychania Heroku mistrza: mymaster np lub poprzez confgi plik)
sehe

2
Ta odpowiedź jest nieprawdziwa. herokuto nazwa pilota i nie jest on całkowicie połączony z klejnotem heroku.
jergason


1

Tak jak ty, ja też starałem się zrozumieć te drobiazgi git i heroku i też byłem zdezorientowany. Ale teraz mam trochę jasności, aby móc krótko odpowiedzieć na twoje pytanie.

Zakładając, że masz konfigurację git w katalogu projektu. Istnieje ukryty folder .git w folderze projektu, który zawiera plik o nazwie „config”, w którym znajdują się wszystkie informacje o pilotach.

Piloty to Twoje indywidualne repozytoria nazwane indywidualnie, takie jak pochodzenie, heroku, staging, prod itp.

W twoim poleceniu heroku oznacza repozytorium, które przypisałeś do projektu heroku. Otwórz plik konfiguracyjny, zobaczysz adres URL.

Kiedy biegasz

git push heroku master

mówisz gitowi, aby wypchnął główną gałąź twojego obecnego repozytorium pochodzenia do głównej gałęzi repozytorium heroku

Reszta wszystkie szczegóły są już udostępnione w innych odpowiedziach, więc nie chcę powtarzać. Więc to jest tylko krótka odpowiedź w moim rozumieniu. Mam nadzieję, że to pomoże.


0

ale jeśli popchnę, nadal popycham do trytryheroku ... czy jest sposób, aby zamiast tego przejść do rzeczywistości?

Znalazłem odpowiedź, która może Cię zainteresować w 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

W ten sposób heroku będzie wiedział, gdzie naciskać!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.