Как «git push heroku master» узнает, куда и на что делать пуш, и как сделать репо? - PullRequest
83 голосов
/ 17 марта 2011

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

git push heroku master

Что heroku и master указывают в этой команде? Как git знает, куда нажимать? (путь мерзавца)

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

Ответы [ 4 ]

94 голосов
/ 17 марта 2011

Часть 'heroku' - это имя удаленного устройства, которое вы настроили - когда вы впервые создаете приложение heroku, оно создает git remote-вызов 'heroku', указывающий на ваше приложение, - если вы набираете 'git remote' внутриваш проект покажет вам удаленные конечные точки.Ничто не мешает вам использовать 'heroku' в качестве имени пульта - если у вас есть несколько сред для вашего приложения, у вас могут быть, например, пульты с именем production или staging.

Часть 'master' - это локальная ветвьВы хотите нажать на пульт.Если вы разрабатываете в ветви функций, например, с именем «myfeature», и вы хотите развернуть ее на heroku, вы бы сделали;

git push heroku myfeature:master

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

Если вы переименуете приложение, изменится удаленный URL-адрес heroku git - сделайте git remote -v, который покажет вам git repoваше приложение использует, вам, вероятно, нужно будет удалить старую исходную герою и добавить новую, git remote rm heroku затем git remote add heroku git@newgitpathfromcontrolpanel

Чтобы узнать больше о Git, я бы порекомендовал эту книгу

38 голосов
/ 28 июня 2013

ЧАСТЬ 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: но что обозначают heroku и master ?

Это скорее вопрос 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 ".

, чтобы сделать это более понятным, вот команда Git для проверки / вывода всех пультов: $ git remote -v отобразит что-то похожее на следующее

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

Таким образом, мы можем предположить, что следующая команда была выполнена (неявно) где-то, когда вы создали $ heroku для создания , следовательно, создав геройку, удаленную для некоторого репозитория heroku (url) *

$ git remote add heroku git@heroku.com:somerepo.git
8 голосов
/ 17 марта 2011

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

git remote -v

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

1 голос
/ 31 июля 2018

Так же, как и вы, я тоже изо всех сил пытался понять эти мельчайшие детали из мерзавца и героку, и я тоже был сбит с толку. Но теперь у меня есть немного ясности, чтобы ответить на ваш вопрос вкратце.

Предполагается, что у вас есть git setup в вашем каталоге проекта. В папке вашего проекта существует скрытая папка .git, которая содержит файл с именем «config», в котором хранится вся информация о пультах дистанционного управления.

Remotes - это ваши индивидуальные репозитории, названные индивидуально, например, origin, heroku, staging, prod и т. Д.

В вашей команде heroku обозначает репозиторий, который вы привязали к проекту heroku. Откройте файл конфигурации, вы увидите URL.

Когда вы запускаете

git push heroku master

вы говорите git, чтобы поместить основную ветку вашего текущего исходного хранилища в главную ветку хранилища heroku

Остальные детали уже поделены в других ответах, поэтому не хочу повторяться. Так что это всего лишь краткий ответ в моем понимании. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...