Cómo enviar diferentes ramas locales de Git a Heroku / master


Heroku tiene una política de ignorar todas las ramas excepto 'master'.

Si bien 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 sea cual sea la rama de tema local en la que esté trabajando, me gustaría una manera fácil de cambiar el maestro de Heroku a esa rama de tema local y hacer un "git push heroku-f" para sobreescribir el maestro en Heroku.

Lo que obtuve de leer el " Empujando Refspecs " sección 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 la rama que sea mi rama actual. Si alguien sabe cómo lograr eso, 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 ese Heroku app/repositorio. Un equipo de pruebas o control de calidad podría 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 empujando a él en un día dado.

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. Lo llamaría "origin" y usaría "heroku" para Heroku para que "git push" siempre respalde todo a origin, y "git push heroku" empuja cualquier rama en la que estoy actualmente a la rama master de Heroku, sobrescribiéndola si es necesario.

Funcionaría esto?

[remote "heroku"]
    url = [email protected]:my-app.git
    push = +refs/heads/*:refs/heads/master

Me gustaría escuchar a 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, realmente no me importa si el repositorio Heroku es de solo escritura. Todavía tengo un repositorio separado, como GitHub, para copia de seguridad y clonación de todos mis trabajo.

Nota al pie: Esta pregunta es similar, pero no del todo igual a ¿Una buena implementación de Git usando la estrategia de ramas con Heroku?

Author: techdreams, 2010-06-04

9 answers

Cuando se usa un comodín, tenía que estar presente en ambos lados del refspec, por lo que +refs/heads/*:refs/heads/master no funcionará. Pero puedes usar +HEAD:refs/heads/master:

git config remote.heroku.push +HEAD:refs/heads/master

También puedes hacer esto directamente con git push :

git push heroku +HEAD:master
git push -f heroku HEAD:master
 111
Author: Chris Johnsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-30 02:10:07

Véase https://devcenter.heroku.com/articles/git#deploying-code

$ git push heroku yourbranch:master
 1325
Author: jassa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-24 12:43:59
git push -f heroku local_branch_name:master
 33
Author: Tomasz Mazur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-11 12:03:32

Usted debe comprobar hacia fuera 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.

 4
Author: jqr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-12-21 04:24:35

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 git remote llamado stagingtwo, entonces el comando para empujar a heroku sería

git push stagingtwo feature/mobile_additions:master
 4
Author: Jonathon Batson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-22 04:57:06

El comando más seguro para enviar diferentes ramas locales de Git a Heroku/master.

git push -f heroku branch_name:master

Nota: Aunque, puede empujar sin usar la-f, se recomienda la-f (bandera de fuerza) con el fin de evitar conflictos con otros desarrolladores' empuja.

 4
Author: techdreams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-24 06:50:06
 2
Author: David,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-04 17:27:34

Heroku labs ahora ofrece un complemento de github que te permite especificar qué rama enviar.

Ver el escrito de Heroku en esta función beta.

Por el momento, tendrás que registrarte como beta tester.

 1
Author: irth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-02 02:01:07

Creo que debería ser

push = refs/heads/*:refs/heads/*

En su lugar...

 0
Author: ken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-05 11:16:47