Heroku tiene una política de ignorar todas las ramas, excepto "maestro".
Si bien estoy seguro de que los diseñadores de Heroku tienen excelentes razones para esta política (supongo que el almacenamiento y la optimización del rendimiento), la consecuencia para mí como desarrollador es que, sea cual sea la rama de tema local en la que esté trabajando, me gustaría una manera fácil para cambiar el maestro de Heroku a esa rama de tema local y hacer un "git push heroku -f" para sobrescribir el maestro en Heroku.
Lo que obtuve al leer la sección "Pushing Refspecs" de http://progit.org/book/ch9-5.html es
git push -f heroku rama-tema-local: referencias / cabezas / maestro
Lo que realmente me gustaría es una forma de configurar esto en el archivo de configuración para que "git push heroku" siempre haga lo anterior, reemplazando local-topic-branch con el nombre de lo que sea mi rama actual. Si alguien sabe cómo lograrlo, ¡hágamelo saber!
La advertencia para esto, por supuesto, es que esto solo es sensato si soy el único que puede acceder a esa aplicación / repositorio de Heroku. Un equipo de prueba o de control de calidad puede administrar dicho repositorio para probar diferentes ramas candidatas, pero tendrían que coordinarse para que todos estén de acuerdo en qué rama están presionando en un día determinado.
Huelga decir que también sería una muy buena idea tener un repositorio remoto separado (como GitHub) sin esta restricción para hacer una copia de seguridad de todo. Llamaría a ese "origen" y usaría "heroku" para Heroku para que "git push" siempre respalde todo al origen, y "git push heroku" empuje cualquier rama en la que estoy actualmente a la rama maestra de Heroku, sobrescribiéndola si necesario.
¿Funcionaría esto?
[remoto "heroku"] url = [email protected]: my-app.git push = + refs / heads / *: refs / heads / master
Me gustaría saber de alguien más experimentado antes de comenzar a experimentar, aunque supongo que podría crear una aplicación ficticia en Heroku y experimentar con eso.
En cuanto a la búsqueda, no me importa si el repositorio de Heroku es de solo escritura. Todavía tengo un repositorio separado, como GitHub, para realizar copias de seguridad y clonar todo mi trabajo.
Nota al pie: ¿Esta pregunta es similar, pero no exactamente igual a la implementación de Good Git usando la estrategia de sucursales con Heroku?
Respuestas:
Al usar un comodín, tenía que estar presente en ambos lados de la especificación de referencia, por
+refs/heads/*:refs/heads/master
lo que no funcionará. Pero puedes usar+HEAD:refs/heads/master
:Además, puede hacer esto directamente con git push :
fuente
git push
comandos hacen lo mismo. Veagit push --help
el significado de la-f
opción y el+
en la refspec.-f
significa fuerza . A mí me funcionó con la respuesta de Jassa .Ver https://devcenter.heroku.com/articles/git#deploying-code
fuente
git push :master
que elimina la rama maestra sobrescribiéndola sin nada. Eso es diferente a sobrescribirlo con otra rama. Heroku probablemente tiene salvaguardas para evitar la eliminación de la rama maestra.fuente
-f
o--force
, y siempre es mejor asegurarse de saber lo que está haciendo cuando fuerza el empuje.El comando más seguro para enviar diferentes ramas locales de Git a Heroku / master.
Nota: aunque puede presionar sin usar -f, se recomienda -f (indicador de fuerza) para evitar conflictos con las presiones de otros desarrolladores.
fuente
Para mi funciona
fuente: - documentos oficiales
fuente
También tenga en cuenta que si usa el sistema git flow y su rama de características podría llamarse
y con un control remoto git llamado stagingtwo, entonces el comando para empujar a heroku sería
fuente
Deberías revisar heroku_san , resuelve este problema bastante bien.
Por ejemplo, podrías:
También facilita la conexión de nuevas instancias de Heroku para implementar una rama temática en nuevos servidores:
Y, por supuesto, puede hacer tareas de rastrillo más simples si hace algo con frecuencia.
fuente
Encontré esto útil. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
fuente
Heroku labs ahora ofrece un complemento github que le permite especificar qué rama empujar.
Vea la redacción de Heroku sobre esta función beta.
Deberá registrarse como beta tester por el momento.
fuente
Creo que debería ser
push = refs/heads/*:refs/heads/*
en lugar...
fuente