Звідки “git push heroku master” знає, куди натиснути і як перейти на інший репо?


92

При натисканні на сховище, розміщене на Heroku, потрібно виконати таку команду:

git push heroku master

Що робить herokuі masterвказує ця команда? Звідки git знає, куди штовхати? (шлях git)

Крім того, я не знав, що можу використовувати heroku renameдля перейменування програми, тому раніше, скажімо, я використовував назву програми тритригероку, а зараз використовую, heroku create real-thingале якщо я натискаю, вона все одно штовхає до тритригероку ... чи є спосіб натиснути на справжнє замість цього?

Відповіді:


107

Частина 'heroku' - це назва пульта, який ви налаштували - коли ви створюєте додаток heroku вперше, коли він створює віддалений виклик git 'heroku', вказуючи на вашу програму - якщо ви вводите 'git remote' у своєму проекті, це покаже вам віддалені кінцеві точки. Ви нічого не заблокуєте у використанні "heroku" як імені пульта - якщо у вас є кілька середовищ для вашого додатка, ви можете мати пульти дистанційного керування з іменем виробництва або інсталяції, наприклад.

Частина "master" - це локальна гілка, яку ви хочете перенести на пульт. Якщо ви розробляєте в гілці функцій, наприклад, з назвою 'myfeature', і ви хочете розгорнути це на heroku, що ви б зробили;

git push heroku myfeature:master

додаткове: master тут каже, штовхніть мою локальну myfeatureгілку у masterгілку на пульті дистанційного керування - примітка: heroku може розгортатися лише з гілки master.

Якщо ви перейменуєте програму, зміниться віддалена URL-адреса heroku git - зробіть це, git remote -v що покаже вам репозиторій git, який використовує ваша програма, вам, ймовірно, потрібно буде видалити своє старе джерело heroku та додати нове, git remote rm herokuтодіgit remote add heroku git@newgitpathfromcontrolpanel

Щоб дізнатись більше про Git, я рекомендую цю книгу


Ви можете оновити URL-адресу пульта дистанційного керування за допомогою git remote set-url <remote-name> <new-url>(Git 1.7.0 і новіших версій), або git config remote.<remote-name>.url <new-url>, або відредагувавши .git/config(можливо, через git config -eGit 1.6.3 і пізніші версії).
Chris Johnsen

3
це було дуже корисно. Дякую
Дієго Уренія

43

ЧАСТИНА 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

12

heroku потрібен як частина самоцвіту heroku, щоб допомогти з натисканням, а master - це просто гілка git, яку ви натискаєте. Git знає, куди слід натиснути, тому що ви створюєте додаток heroku, натискання автоматично встановлюється, що ви можете побачити, набравши

git remote -v

якщо вам потрібно змінити, видаліть його за допомогою, git remote rm herokuа потім додайте новий додаток yoru за допомогоюgit remote add heroku git@heroku.com:your-application-15.git


зауважте, що віддалена гілка зазвичай створюється з тим самим іменем, що і гілка, яку ви натискаєте. Однак це можна змінити (git push heroku master: mymaster eg, або через файл confgi)
sehe

2
Ця відповідь не відповідає дійсності. heroku- це назва пульта дистанційного керування, і він абсолютно не пов’язаний із самоцвітом героку.
jergason


1

Так само, як і ви, я також намагався зрозуміти ці нісенькі піщинки git та heroku, і я теж був розгублений. Але зараз я отримав трохи ясності, щоб коротко відповісти на ваше запитання.

Припускаючи, що у вас є налаштування git у каталозі вашого проекту. У папці вашого проекту існує прихована папка .git, яка містить файл із назвою "config", що містить всю інформацію про пульти.

Пульти - це ваші окремі сховища, названі окремо, як походження, героку, постановка, продання тощо.

У вашій команді heroku означає сховище, яке ви зіставили з проектом heroku. Відкривши конфігураційний файл, ви побачите URL-адресу.

Коли ти біжиш

git push heroku master

ви говорите git перенести головну гілку вашого поточного сховища джерела в головну гілку сховища heroku

Всі інші деталі вже містяться в інших відповідях, тому не хочу повторювати. Отже, це лише коротка відповідь, на моє розуміння. Сподіваюся, це допоможе.


0

але якщо я натискаю, це все одно штовхає до тритригероку ... чи є спосіб замість цього натиснути на реальне?

Я знайшов відповідь, яка може вас зацікавити, на 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

Таким чином, героку буде знати, куди штовхнути!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.