ЧАСТИНА 1: "Звідки git знає, куди натискати?"
Перед виконанням вищезазначеної команди:
$ git push heroku master
Завжди є кілька інших кроків для встановлення: встановлення Git та Heroku, створення локального репозиторію Git, реєстрація в heroku, вхід в heroku через командний рядок, створення дескриптора heroku до точки хостингу ( пояснено в ЧАСТІ 2 )
1. Місцеве сховище 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. Зареєструйтесь (ed) для Heroku та увійдіть через командний рядок:
$ 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
Отже, запустивши, $ git push heroku master
ви пересунули код / додаток до Heroku.
ЧАСТИНА 2: але що вказує героку та майстер ?
Це більше питання Git, ніж Heroku - Heroku - це хостингова платформа, яка залежить від Git (Розподілена система контролю версій) для розгортання.
Основна концепція 'push' - це переміщення якоїсь речі (файлу, програми, ..), яку ми маємо локально (у нашій робочій машині), кудись ще, в даному випадку до віддаленого сховища (віддаленої машини).
У Git перед використанням 'push' ми створюємо пульт (дескриптор), який діє як посилання на віддалене сховище (Повна URL-адреса), ми робимо це за допомогою наступної команди:
$ git remote add <remote-name-of-our-choice> <URL-where-you-be-pushing-yourapp>
Основною структурою команди 'push' є:
$ git push <remote-name> <branch>
Так $ git push heroku master
само насправді надсилається ваш код / додаток / файл (з якогось локального репозиторію Git) у віддалене репо «heroku».
цікаво, коли цей пульт дистанційного керування "heroku" був створений, він був доданий, коли ви виконали $ 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
Зверніть увагу на останній рядок " Git remote heroku added ".
щоб було зрозуміліше, ось команда Git для перевірки / виводу всіх пультів дистанційного керування: $ git remote -v відобразить щось подібне до наступного
$ git remote -v
heroku git@heroku.com:somerepo.git (fetch)
heroku git@heroku.com:somerepo.git (push)
Отже, ми можемо припустити, що наступну команду було виконано (неявно) десь, коли ви створили $ heroku , отже, створюєте heroku віддалено до якогось репозиторію heroku (url) *
$ git remote add heroku git@heroku.com:somerepo.git
git remote set-url <remote-name> <new-url>
(Git 1.7.0 і новіших версій), абоgit config remote.<remote-name>.url <new-url>
, або відредагувавши.git/config
(можливо, черезgit config -e
Git 1.6.3 і пізніші версії).