git - fatal - heroku commands
Cómo empujar diferentes sucursales locales de Git a Heroku/maestro (9)
Creo que debería ser
push = refs/heads/*:refs/heads/*
en lugar...
Heroku tiene una política de ignorar todas las ramas, pero ''maestro''.
Aunque estoy seguro de que los diseñadores de Heroku tienen excelentes razones para esta política (supongo que para el almacenamiento y la optimización del rendimiento), la consecuencia para mí como desarrollador es que en cualquier 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 de leer la sección "Presionar Refspecs" de http://progit.org/book/ch9-5.html es
git push -f heroku local-topic-branch:refs/heads/master
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, por favor hágamelo saber!
La advertencia para esto, por supuesto, es que esto solo es sensato si soy el único que puede empujar a esa aplicación / repositorio Heroku. Un equipo de prueba o control de calidad podría administrar dicho repositorio para probar diferentes sucursales candidatas, pero tendrían que coordinarse para que todos estén de acuerdo sobre qué sucursal están presionando en un día determinado.
No hace falta decir que también sería una muy buena idea tener un repositorio remoto separado (como GitHub) sin esta restricción para respaldar todo. Llamaría a ese "origen" y uso "heroku" para Heroku, de modo que "git push" siempre respalde todo al origen, y "git push heroku" empuja cualquier rama en la que esté actualmente en la rama principal de Heroku, sobrescribiéndola si necesario.
¿Funcionaría esto?
[remote "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 recuperación, realmente no me importa si el repositorio de Heroku es de solo escritura. Todavía tengo un repositorio separado, como GitHub, para la copia de seguridad y la clonación de todo mi trabajo.
Nota al pie: ¿Esta pregunta es similar a, pero no es lo mismo que la implementación de Good Git con la estrategia de sucursales con Heroku?
Deberías revisar heroku_san , resuelve este problema bastante bien.
Por ejemplo, usted podría:
git checkout BRANCH
rake qa deploy
También facilita la creación de nuevas instancias de Heroku para implementar una rama temática en nuevos servidores:
git checkout BRANCH
# edit config/heroku.yml with new app instance and shortname
rake shortname heroku:create deploy # auto creates deploys and migrates
Y, por supuesto, puede hacer tareas de rake más simples si hace algo con frecuencia.
El comando más seguro para empujar diferentes sucursales locales de Git a Heroku / master.
git push -f heroku branch_name:master
Nota: Aunque, puede presionar sin usar la opción -f, se recomienda la opción -f (forzar marca) para evitar conflictos con las presiones de otros desarrolladores.
Heroku labs ahora ofrece un complemento de github que te permite especificar qué rama empujar.
Vea el artículo de Heroku sobre esta función beta.
Tendrá que registrarse como beta tester por ahora.
Me ha resultado útil. http://jqr.github.com/2009/04/25/deploying-multiple-environments-on-heroku.html
También tenga en cuenta que si utiliza el sistema de flujo de git y su rama de características, podría llamarse
feature/mobile_additions
y con un control remoto de git llamado stagingtwo, entonces el comando para empujar a heroku sería
git push stagingtwo feature/mobile_additions:master
Ver https://devcenter.heroku.com/articles/git#deploying-code
$ git push heroku yourbranch:master
Al usar un comodín, tenía que estar presente en ambos lados de la refspec, por lo que +refs/heads/*:refs/heads/master
refs +refs/heads/*:refs/heads/master
no funcionará. Pero puedes usar +HEAD:refs/heads/master
:
git config remote.heroku.push +HEAD:refs/heads/master
Además, puedes hacer esto directamente con git push :
git push heroku +HEAD:master
git push -f heroku HEAD:master
git push -f heroku local_branch_name:master