Как связать папку с существующим приложением Heroku


815

У меня есть существующее приложение Rails на GitHub и развернутое на Heroku. Я пытаюсь настроить новую машину для разработки и клонирую проект из моего репозитория GitHub. Однако я не совсем понимаю, как связать эту папку с Heroku. Первоначально я использовал heroku createкоманду, но, очевидно, я не хочу делать это на этот раз, поскольку она создаст еще один экземпляр Heroku.

Ответы:


1243

Heroku связывает ваши проекты на основе herokugit remote (и нескольких других опций, смотрите обновление ниже). Чтобы добавить пульт Heroku в качестве удаленного в текущий репозиторий, используйте следующую команду:

git remote add heroku git@heroku.com:project.git

где projectимя вашего проекта Heroku (так же, как project.heroku.comсубдомен). Как только вы это сделаете, вы можете использовать heroku xxxxкоманды (при условии, что у вас установлен Heroku Toolbelt ) и можете нажимать на Heroku как обычно через git push heroku master. В качестве ярлыка, если вы используете инструмент командной строки, вы можете набрать:

heroku git:remote -a project

где, опять же, projectназвание вашего проекта Heroku (спасибо, полковник Паник ). Вы можете назвать Git Remote как угодно, пройдя мимо -r remote_name.

[Обновить]

Как упоминал Бен в комментариях, herokuдля работы команд gem не нужно называть пульт . Я проверил источник , и похоже, что он работает так:

  1. Если вы укажете имя приложения через --appопцию (например heroku info --app myapp), оно будет использовать это приложение.
  2. Если вы укажете имя удаленного Git с помощью --remoteопции (например heroku info --remote production), оно будет использовать приложение, связанное с этим удаленным Git.
  3. Если вы не укажете опцию, и вы heroku.remoteустановили ее в конфигурационном файле Git, он будет использовать приложение, связанное с этим удаленным (например, чтобы установить удаленное использование по умолчанию для «производственного» использования git config heroku.remote productionв вашем хранилище, и Heroku запустится, git config heroku.remoteчтобы прочитать значение этой настройки)
  4. Если вы не укажете опцию, гем не найдет конфигурацию в вашем .git/configфайле, и гем найдет только один пульт в ваших пультах Git, у которого есть «heroku.com» в URL, он будет использовать этот пульт.
  5. Если ничего из этого не работает, возникает ошибка, указывающая, что вы должны перейти --appк вашей команде.

Ссылка на «источник» выше не работает. Может быть, попробуйте эту страницу: devcenter.heroku.com/articles/using-the-cli - хотя я думаю, что документации там недостаточно.
Purplejacket

1
Если вы попытаетесь использовать этот heroku git:remoteметод, убедитесь, что вы используете инструментальный пояс heroku cli и что в вашей системе еще не установлен драгоценный камень heroku (кажется, он не работал для меня со старыми драгоценными камнями).
Пьер-Адриен Буассон

3
Кроме того, для нескольких веток heroku вы можете использовать $ git config heroku.remote <appname>приложение по умолчанию, чтобы вы могли использовать команды терминала для этого приложения.
Шехарьяр

1
если использовать http, то есть, heroku loginтогда пульт имеет видhttps://git.heroku.com/project-name.git
max pleaner

1
Примечание. Теперь Heroku описывает это в обзоре проекта: перейдите на dashboard.heroku.com , щелкните свое приложение, затем перейдите на вкладку «развертывание» и выберите метод развертывания «Heroku git» (выбран по умолчанию). Затем вы получите инструкции о том, как подключить существующую папку / git к Heroku.
удобно

230

В Heroku CLI для этого есть простой способ. Для приложения с именем 'fall-wind-1624':

$ heroku git:remote -a falling-wind-1624
Git remote heroku added.

См. Https://devcenter.heroku.com/articles/git#creating-a-heroku-remote.


1
! Resource not found
Зеленый,

1
Вы можете назвать имя пульта как хотите-r other_remote_name
MasterScrat

2
Это все еще правильный способ сделать это, даже если вы подключили приложение Heroku непосредственно к GitHub. Обратите внимание, что он не будет перезаписывать ваш "исходный" пульт; вместо этого он создает пульт дистанционного управления "heroku".
Сет

144

Не забывайте, если вы также находитесь на машине, где вы еще не настроили героку

heroku keys:add

Или вы не сможете подтолкнуть или потянуть на репо.


3
О да! Это тоже помогло мне. У меня было приложение, где мы начинали с базового, а затем раздваивали «героку» на «постановку» и «производство». Так что я сделал git remote add staging git@staging.xx:yy.gitи git remote add production git@production.xx:yy.git- но этого было недостаточно. Когда я пытался сделать git push staging master(или производство), я получал «Отказано в доступе (publickey). Fatal: Удаленный конец неожиданно зависает». Что исправило эту ошибку, heroku keys:addтак это Готи.
Purplejacket

8

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

1. Чтобы проверить доступ вашего приложения к Heroku (особенно к приложению)

heroku apps

в нем будут перечислены приложения, к которым у вас есть доступ, если вы устанавливаете их впервые, вам, вероятно, потребуется

heroku keys:add

2. Затем настройте свой Git Remote

Для уже созданного приложения Heroku вы можете легко добавить пульт в локальный репозиторий с помощью heroku git: remoteкоманды. Все, что вам нужно, это имя вашего приложения Heroku:

heroku git:remote -a appName

Вы также можете переименовать пульты с помощью команды git remote rename:

git remote rename heroku heroku-dev(you desired app name)

Затем вы можете использовать команду git remote для подтверждения того, что для вашего приложения установлен пульт ДУ.

 git remote -v

4

Используйте вилку героку

  1. Используйте новую команду "heroku fork"! Это скопирует все окружение, и вы должны обновить репозиторий github после!

    heroku fork -a sourceapp targetapp
    
  2. Клонируй это местное

    git clone git@heroku.com:youamazingapp.git
    
  3. Сделайте новый репо на github и добавьте его

    git remote add origin https://github.com/yourname/your_repo.git
    
  4. Нажмите на GitHub

    git push origin master
    



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.