Come collegare una cartella con un'app Heroku esistente


815

Ho un'app Rails esistente su GitHub e distribuita su Heroku. Sto cercando di impostare una nuova macchina di sviluppo e ho clonato il progetto dal mio repository GitHub. Tuttavia, sono confuso su come collegare questa cartella a Heroku. Inizialmente, ho usato il heroku createcomando, ma ovviamente non voglio farlo questa volta poiché creerà un'altra istanza di Heroku.

Risposte:


1243

Heroku collega i tuoi progetti in base al herokutelecomando git (e alcune altre opzioni, vedi l'aggiornamento sotto). Per aggiungere il tuo telecomando Heroku come telecomando nel tuo repository corrente, usa il seguente comando:

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

dov'è projectil nome del tuo progetto Heroku (lo stesso del project.heroku.comsottodominio). Una volta che lo hai fatto, puoi usare i heroku xxxxcomandi (supponendo che tu abbia installato Heroku Toolbelt ) e puoi spingere su Heroku come al solito tramite git push heroku master. Come scorciatoia, se si utilizza lo strumento da riga di comando, è possibile digitare:

heroku git:remote -a project

dove, di nuovo, projectè il nome del tuo progetto Heroku (grazie, colonnello Panic ). È possibile assegnare un nome al telecomando Git come desiderato -r remote_name.

[Aggiornare]

Come menzionato da Ben nei commenti, il telecomando non deve essere nominato herokuper far funzionare i comandi gem. Ho controllato la fonte e sembra che funzioni così:

  1. Se si specifica il nome di un'app tramite l' --appopzione (ad es. heroku info --app myapp), Utilizzerà quell'app.
  2. Se specifichi un nome Git remoto tramite l' --remoteopzione (ad es. heroku info --remote production), Utilizzerà l'app associata a quel telecomando Git.
  3. Se non specifichi alcuna opzione e hai heroku.remoteimpostato nel tuo file di configurazione Git, utilizzerà l'app associata a quel telecomando (ad esempio, per impostare il telecomando predefinito su "produzione" git config heroku.remote productionnel tuo repository, e Heroku verrà eseguito git config heroku.remoteper leggere il valore di questa impostazione)
  4. Se non specifichi alcuna opzione, la gemma non trova alcuna configurazione nel tuo .git/configfile e la gemma trova solo un telecomando nei telecomandi Git che ha "heroku.com" nell'URL, userà quel telecomando.
  5. Se nessuno di questi funziona, genera un errore che ti dice di passare --appal tuo comando.

Il link alla "fonte", sopra, non funziona. Forse prova questa pagina: devcenter.heroku.com/articles/using-the-cli - anche se penso che il documento non sia abbastanza.
Purplejacket,

1
Se si tenta di utilizzare il heroku git:remotemetodo, verificare che si stia utilizzando la clip della cintura degli strumenti di heroku e che sul proprio sistema non sia ancora installata alcuna gemma di heroku (sembra che non funzionasse con me con le vecchie gemme).
Pierre-Adrien Buisson,

3
Inoltre, per più rami heroku puoi usare $ git config heroku.remote <appname>per impostare un'app predefinita in modo da poter usare i comandi del terminale per quell'app.
Sheharyar,

1
se si utilizza http, heroku loginquindi il telecomando è nel formatohttps://git.heroku.com/project-name.git
max pleaner

1
Nota: Heroku ora lo descrive nella panoramica del progetto: vai su dashboard.heroku.com , fai clic sulla tua app, quindi passa alla scheda "distribuisci" e scegli il metodo di distribuzione "Heroku git" (selezionato per impostazione predefinita). Quindi, riceverai le istruzioni su come connettere una cartella / git esistente con Heroku.
utile il

230

La CLI di Heroku ha una scorciatoia per questo. Per un'app denominata "falling-wind-1624":

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

Vedi https://devcenter.heroku.com/articles/git#creating-a-heroku-remote


1
! Resource not found
Verde,

1
Puoi nominare il telecomando come vuoi passando-r other_remote_name
MasterScrat

2
Questo è ancora il modo corretto di farlo anche se hai collegato la tua app Heroku direttamente a GitHub. Nota che non sovrascriverà il tuo telecomando "origin"; crea invece un telecomando "heroku".
Seth

144

Non dimenticare, se sei anche su una macchina in cui non hai mai impostato Heroku in precedenza

heroku keys:add

O non sarai in grado di spingere o tirare al repository.


3
Oh si! Anche questo mi ha aiutato. Avevo un'app da cui iniziammo di base, poi biforcammo "heroku" in "messa in scena" e "produzione". Così ho fatto git remote add staging git@staging.xx:yy.gite git remote add production git@production.xx:yy.git- ma non era abbastanza. Quando ho provato a fare git push staging master(o produzione) ho ricevuto "Autorizzazione negata (publickey). Fatale: la fine remota ha riattaccato inaspettatamente". Ciò che heroku keys:addrisolveva quell'errore era fare come menziona Ghoti.
Purplejacket,

8

Due cose a cui prestare attenzione durante l'impostazione di un nuovo sistema di distribuzione per la vecchia app

1. Per controllare l'accesso dell'app a Heroku (in particolare l'app)

heroku apps

elencherà le app a cui hai accesso se hai impostato per la prima volta, probabilmente è necessario

heroku keys:add

2. Quindi configura il tuo telecomando Git

Per l'app Heroku già creata, puoi facilmente aggiungere un telecomando al tuo repository locale con il heroku git: remotecomando. Tutto ciò di cui hai bisogno è il nome della tua app Heroku:

heroku git:remote -a appName

puoi anche rinominare i telecomandi con il comando git remote rename:

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

quindi è possibile utilizzare il comando git remote per confermare che è stato impostato un telecomando per l'app

 git remote -v

4

Usa la forchetta di heroku

  1. Usa il nuovo comando "heroku fork"! Copierà tutto l'ambiente e dopo dovrai aggiornare il repository github!

    heroku fork -a sourceapp targetapp
    
  2. Clonalo locale

    git clone git@heroku.com:youamazingapp.git
    
  3. Crea un nuovo repository su github e aggiungilo

    git remote add origin https://github.com/yourname/your_repo.git
    
  4. Spingere su github

    git push origin master
    



Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.