¿Cómo empujo una rama local de Git a la rama maestra en el control remoto?


468

Tengo una rama llamada desarrollo en mi repositorio local, y quiero asegurarme de que cuando la empuje al origen se fusione con el origen / maestro. Actualmente, cuando presiono, se agrega a una rama de desarrollo remoto.

¿Cómo puedo hacer esto?


¿Hay alguna razón particular por la que no desea fusionarlo localmente originy luego empujarlo al control remoto?
bhamby

Creo que @galador significa fusionarse localmente master, pero es un punto válido. Si es lo suficientemente estable para la rama maestra de origen, entonces seguramente es lo suficientemente estable para su rama maestra.
Cascabel

1
@Jefromi Sí, whoops, error tipográfico. -_-
bhamby

2
@Jefromi imagina que estabas trabajando en algo en tu maestro local e hiciste algunos compromisos que aún no están listos para impulsar. Entonces resulta que tienes una tarea urgente. Usted crea una sucursal local desde el maestro remoto, trabaja y empuja sus cambios de regreso al maestro. Tal vez no sea la mejor manera, pero eso es lo que me pasó y eso fue lo que hice. Funcionó sin problemas como estaba previsto. Bueno, debería haber estado trabajando en una sucursal local separada en primer lugar, pero es doloroso en el trasero ramificarse todo el tiempo y ya era demasiado tarde.
pinkeen

21
Empujo una rama de desarrollo a una aplicación de prueba no pública en Heroku para ver cómo funcionan las cosas en el entorno de Heroku. Definitivamente no quiero fusionar mi código master, pero Heroku no ejecutará el código a menos que esté activado masterdentro de la aplicación. ¡Esta es una solicitud perfectamente razonable con casos de uso legítimos!
JacobEvelyn

Respuestas:


813
$ git push origin develop:master

o, más generalmente

$ git push <remote> <local branch name>:<remote branch to push into>

25
No hagas "git push origin: master" que pueda eliminar tu rama existente del control remoto
Mangirdas Skripka

48
¡Verdadero @MangirdasSkripka! Sólo tiene que utilizar git push origin head:mastersi no desea especificar el nombre de la rama actual :)
Francesc Rosas

23
Buena idea @ FrancescRosàs, aunque es HEAD (mayúsculas).
smokku

@Mipadi si tengo permiso de reparación, ¿puedo mover esto
Neeraj Sharma

11
@NeerajSharma: No sé qué es el permiso de reparación o qué quieres mover.
mipadi

194

Como la gente mencionó en los comentarios, probablemente no quieras hacer eso ... La respuesta de mipadi es absolutamente correcta si sabes lo que estás haciendo.

Yo diría:

git checkout master
git pull               # to update the state to the latest remote master state
git merge develop      # to bring changes to local master from your develop branch
git push origin master # push current HEAD to remote master branch

 


23
Solo para mencionar que su solicitud tiene sentido, estoy usando ese caso para desplegar (impulsar) mi desarrollo al maestro Heroku
Fabiano Soriani

55
Nuevamente, esta técnica es en mi humilde opinión solo para usuarios avanzados de git. No es que sea demasiado difícil, solo requiere que las personas entiendan lo que están haciendo y por qué funciona de la manera en que funciona. Todos son libres de usar git a su gusto, pero creo que seguir el enfoque que sugerí es mucho mejor para fines educativos, especialmente para los recién llegados a git. Las "ramas temáticas" limpias son la forma de comenzar, puede optimizar su flujo de trabajo más adelante si es necesario.
Eugene Sajine

1
En realidad, es algo bastante común. La rama maestra generalmente es su rama de implementación. Si dos equipos intencionalmente divergen en su despliegue, entonces es probable que use una sucursal local seleccionada por cereza para empujar parches río arriba. Ahora podría argumentar que los cambios deberían llevarse a una rama y luego fusionarse a partir de ahí en maestro, pero ciertamente no es tan extraño hacerlo de otra manera, en mi opinión.
dgatwood

+1 Esta es la forma más lógica de "compilar" una versión de producción.
Ryan

¿Cómo lo harías si no quieres fusionarte con desarrollo pero has desarrollado rebase a master?
user239558

-1

Como una extensión a la respuesta de @ Eugene, otra versión que funcionará para enviar el código del repositorio local a la rama master / desarrollo.

Cambie a la rama 'maestro':

$ git checkout master

Combinar de repositorio local a maestro:

$ git merge --no-ff FEATURE/<branch_Name>

Empuje para dominar:

$ git push

-1

Siga los pasos a continuación para insertar el repositorio local en la rama maestraenter code here

$ git status

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.