2013-09-29 21 views
10

Stiamo provando a distribuire un grande progetto Rails su Heroku per la prima volta, ma qualcosa si sta rompendo durante il processo di compilazione di Heroku e abbiamo no way of knowing what.Come distribuire vecchi commit su Heroku

Quindi ora pianificheremo B, che è quello di risalire la catena di commit e testare la distribuzione di ogni fase del percorso contro Heroku fino a quando non capiremo a che punto diventa non-compilabile. (Sì, è il meglio che potrei inventare a questo punto.)

Quindi ho pensato di clonare il progetto a livello locale, controllare alcuni vecchi commit e spingere su heroku. Ma poi ho scoperto che se spingo a heroku da qualsiasi cosa tranne il master, non costruisce l'app ?? Invece dice: "Spinta su un ramo non master, saltando la build."

Così ora anche il mio piano cattivo è un non-starter. Sto solo cercando una pausa qui. Qualche idea su come fare ciò che sto cercando di fare?

risposta

11

Non è che Heroku costruisce solo se si preme da padrone, piuttosto Heroku costruirà solo se si spinge - padrone. Se solo fare

git push heroku 

probabilmente stai spingendo il ramo locale a uno con lo stesso nome su Heroku (il comportamento predefinito esatto è configurabile). Si può spingere da una filiale locale diverso da padroneggiare Heroku con

git push heroku my_local_branch:master 

o, se si è già estratto il my_local_branch si potrebbe usare

git push heroku HEAD:master 

Vedi le documentation for git push - gli esempi verso la fine, in particolare, posso aiutare.

si avrà probabilmente bisogno di usare -f per forzare il push:

git push -f heroku my_local_branch:master 
+0

Impressionante @ matt- proprio quello di cui avevo bisogno. E ho appena trovato questo descritto [nei documenti heroku] (https://devcenter.heroku.com/articles/multiple-environments#advanced-linking-local-branches-to-remote-apps). Domanda: perché dovrei comunque fare forza '-f'? – Yarin

+0

@Yarin Se stai provando a spingere un commit precedente rispetto a quello che c'è già su 'master', git ti fermerà normalmente. Devi usare '-f' per dire" sì, io davvero intendo sovrascrivere (e possibilmente perdere) quelle successive commette ". – matt

+0

Ottenuto- grazie- – Yarin

12

E 'molto più facile per ottenere il risultato desiderato con Heroku invece del processo git multi-step di check-in codice, e spingendo esso. Ciò mantiene pulita la tua cronologia git.

$ heroku releases 
$ heroku rollback v11 
+0

Si prega di aggiungere una spiegazione sul motivo per cui è una soluzione migliore – StormeHawke

+2

Penso che la domanda era, come distribuire un commit che non è mai stato spinto su heroku remoto prima. Stai dando una soluzione su come eseguire il rollback su un commit che è già stato distribuito su Heroku – AzaFromKaza

Problemi correlati