2011-08-01 9 views
25

sigo recibiendo el siguiente error con heroku + git ...Implementación en heroku con git pone cada vez rechazados por el avance rápido de

$ heroku jammit:deploy --app XXXXXXXXXXX 
===== Compiling assets...[OK] 
===== Commiting assets...[OK] 
===== Done... 
===== Deploying assets for xxxxx-staging to heroku... 
To [email protected]:XXXXXXXX.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:xxx-staging.git' 
To prevent you from losing history, non-fast-forward updates were rejected 
Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 
[FAIL] 
===== Done... 
===== Deleting compiled assets...[OK] 
===== Commiting deleted assets...[OK] 
===== Done... 
$ git pull 
Already up-to-date. 

Alguna idea de lo que estoy haciendo mal o debería estar haciendo de manera diferente a permitir empujar sin tener que forzar un empuje?

Gracias

Respuesta

81

Simplemente fuerce la confirmación cada vez que presione y la empujará incluso si hay confirmaciones de avance rápido. Hacemos esto en nuestro servidor de desarrollo Heroku todo el tiempo, ya que todos estamos empujando diferentes compromisos (algunos más retrasados ​​que otros).

git push -f [email protected]:picasso-staging.git 

No consumo Jammit para el despliegue, pero probablemente podría salirse con la fuerza de empuje primero y luego ejecutar la tarea Jammit segundos. O verifique si jammit admite un indicador de fuerza forzada de algún tipo.

+0

esta respuesta debe ser aceptada. – jpwynn

1

El problema es que los cambios ya se han empujado y su compromiso está detrás de estos empujes más nuevos. Voy a suponer que todavía tienes una rama principal y tu rama de características, digamos que se llama my_feature. Puede hacer esto y estar bien:

git checkout master 
git pull 
git checkout my_feature 
git rebase master 
    (you may have to fix some conflicts here, if any are found) 
git checkout master 
git merge my_feature 
git push heroku 

Usted debe recordar ejecutar todas las pruebas que hay que asegurarse de que todo está bien todavía.

+0

Gracias por esto, pero ahora que estamos en pre = lanzamiento, todo está en la rama principal. Sugerencias? – AnApprentice

+0

$ git checkout master Ya está en 'master' Sucursal está por delante de 'origin/master' por 4 commits. – AnApprentice

+0

origin/master no es lo mismo que master. origin/master es una rama remota que cuando acaba de hacer "git pull" tira de los cambios en, y luego los fusiona en master ("git fetch" simplemente tira de los cambios en origen/master y luego puede fusionarse manualmente) Así que sí, tu rama maestra está por delante de lo que se derribó por última vez, así que adelante y 'git pull'. Probablemente tengas algunos conflictos y luego, si todo está bien, simplemente presiona! No es necesario volver a establecer la base, si ya está en su maestro local. – MrDanA

7
git push -f REMOTE BRANCH:master #or just master 

Force it! Reemplace REMOTE con su nombre remoto heroku (git remote -v para ver todos los controles remotos). Reemplace BRANCH con la rama que desea presionar o simplemente ponga "master" para la rama principal.

+1

Creo que te refieres a "git remote -v" para ver todos los controles remotos. –

+0

sí, gracias por el corrector ortográfico – dsmithco

Cuestiones relacionadas