2012-06-08 22 views
7

Estoy usando Heroku y tengo una aplicación de Rails que es estable (entorno de producción), así que quería crear algo nuevo donde pueda tener un aseguramiento de calidad env donde pueda ver cómo funcionarán los cambios en Heroku (además de agregar mejoras para lanzamientos) sin presionar siempre a mi aplicación de producción.Errores de Git al presionar en Heroku

Lo que hice fue crear una nueva aplicación Heroku, y también crear una nueva rama localmente (dev). Mi intención era fusionar dev en master de forma local después de probar el cambio en mi nueva aplicación Heroku QA, y luego pasar a la producción de Heroku desde mi rama principal.

Mi enfoque puede ser malo con mi paisaje, soy un novato, así que esta fue solo mi mejor conjetura sobre cómo hacer esto.

Pero cuando empujé mi rama de desarrollo a mi nueva aplicación QA, funcionó para empujar a una rama de desarrollo de la aplicación QA, pero no al maestro. Así que no pude ver (y probar) mis cambios en la nueva aplicación QA. Me parece estar diciendo que sólo puedo empujar la rama principal a la maestra de mi aplicación de control de calidad, puesto que ya sacó y todo ya se había levantado al día, pero yo recibo este error:

Pushing to [email protected]:foobar/QA.git 
To [email protected]:foobar/QA.git 
! [rejected]  master -> master (non-fast-forward) 
error: failed to push some refs to '[email protected]:foobar/QA.git' 
hint: Updates were rejected because the tip of your current branch is behind 
hint: its remote counterpart. Merge the remote changes (e.g. 'git pull') 
hint: before pushing again. 
hint: See the 'Note about fast-forwards' in 'git push --help' for details. 

Puede alguien, por favor, ayúdame a descubrir qué estoy haciendo mal, ya sea con mi entorno o con Git? Gracias.

+0

Estás preguntando sobre Heroku, pero tu mensaje de error dice Github. Asegúrate de empujar hacia el lugar correcto. – matt

Respuesta

20

Las aplicaciones de Heroku solo se ejecutan fuera de la rama principal del repositorio de aplicaciones (local de Heroku). Si desea implementar una sucursal en Heroku, que no es la sucursal principal de su repositorio local, debe especificarla. En su caso, sería algo así como git push qa-remote dev:master (reemplace qa-remote con el nombre real del control remoto en su aplicación de control de calidad), que dice empujar mi rama de desarrollo local a la rama principal en qa-remote.

Cuando presiona así por primera vez, es probable que necesite agregar el indicador -f para forzar la inserción (avance rápido). Posteriormente, debería poder presionar sin el indicador -f, siempre que su sucursal local esté actualizada.

+0

exactamente lo que estaba buscando, gracias! – yellowreign

22

Intente presionar con la opción -ff (avance rápido): git push heroku master -ff (reemplace heroku con el nombre real del control remoto heroku).

+1

Parece que tiene que haber una manera mejor. Dado que varios desarrolladores están trabajando en la aplicación, si hay una mejor configuración u otra forma de hacerlo que de rápido avance, creo que sería mejor. – yellowreign

Cuestiones relacionadas