Cómo obtener cambios de otra sucursal

84

Actualmente estoy trabajando en una featurexsucursal. Nuestra rama maestra se llama rama our-team. Desde que comencé a trabajar featurex, se han realizado más cambios en la rama our-team. Antes de presionar featurexpara la fusión, me gustaría obtener todos los cambios de la our-teamrama a nivel local para featurexpoder asegurarme de que todo funcione como se espera.

He hecho esto localmente para obtener los últimos cambios de our-team.

git checkout our-team
git pull

¿Cómo puedo hacer eso?

Antonio
fuente
6
Hiciste la pregunta de manera muy deliberada y precisa. Esto hace que sea más fácil de responder y más fácil de entender para los novatos (como yo).
douglas.kirschman

Respuestas:

45

Puede usar rebase , por ejemplo, git rebase our-teamcuando está en su ramafeaturex

Moverá el punto de inicio de la rama al final de su our-teamrama, fusionando todos los cambios en su featurexrama.

Julio
fuente
3
Usaré esto en el futuro, sin embargo, esta vez hice lo siguiente ... ¿tiene el mismo efecto? git checkout our-team git pull git checkout featurex git merge our-team
Anthony
5
Me gustaría enfatizar: si hace esto y no tiene los cambios de forma our-teamlocal, deberá ejecutar en su git fetch && git rebase origin/our-teamlugar. Sus comandos asumen que el repositorio se ha actualizado antes.
Makoto
97
  1. ir a la rama maestra our-team

    • git checkout nuestro-equipo
  2. extraer todos los nuevos cambios de la our-teamrama

    • git pull
  3. ve a tu sucursal featurex

    • git checkout featurex
  4. fusionar los cambios de our-teamrama en featurexrama

    • git merge our-team
    • o git cherry-pick{commit-hash} si desea fusionar confirmaciones específicas
  5. empuja tus cambios con los cambios de our-teamrama

    • git push

Nota : probablemente tendrá que solucionar los conflictos después de fusionar una our-teamrama en otra featurexantes de presionar

Jad Chahine
fuente
¿Dónde entraría git pull?
chia yongkang
26
git fetch origin our-team

o

git pull origin our-team

pero primero debe asegurarse de que ya está en la rama a la que desea actualizar (featurex).

HEISENBERG
fuente
8

Ya casi has llegado :)

Todo lo que queda es

git checkout featurex
git merge our-team

Esto fusionará nuestro-equipo en featurex.

Lo anterior asume que ya ha comprometido / escondido sus cambios en featurex, si ese no es el caso, deberá hacer esto primero.

Pierre Fouilloux
fuente
5

Para otras personas que se encuentren con esta publicación en Google. Hay 2 opciones, fusionar o reajustar su rama. Ambos funcionan de manera diferente, pero tienen resultados similares.

La respuesta aceptada es una nueva base . Esto tomará todas las confirmaciones realizadas our-team y luego aplicará las confirmaciones realizadas featurex, lo que le pedirá que las combine según sea necesario.

Una pequeña advertencia del rebase es que pierde / reescribe el historial de su rama, esencialmente diciéndole a git que su rama no comenzó en la confirmación 123abc sino en la confirmación 456cde. Esto va a causar problemas para otras personas que trabajan en la rama, y algunas herramientas remotas se quejan de ello. Sin embargo, si estás seguro de lo que estás haciendo, para eso es la --forcebandera.

Lo que sugieren otros carteles es una fusión . Esto tomará la featurexrama, con cualquier estado que tenga e intentará fusionarla con el estado actual de our-team, lo que le pedirá que haga una, grande, fusionar y corregir todos los errores de fusión antes de presionar our-team. La diferencia es que está aplicando sus featurexconfirmaciones antes de las our-teamnuevas confirmaciones y luego arreglando las diferencias. Tampoco reescribe el historial, sino que le agregas un compromiso en lugar de reescribir los anteriores.

Ambas opciones son válidas y pueden funcionar en conjunto. Lo que generalmente se hace (con eso quiero decir, si está utilizando herramientas y metodología generalizadas como git-flow ) para una rama de función es fusionarla en la rama principal, a menudo pasando por una solicitud de fusión, y resolver todos los conflictos que surgen en una (o varias) combinaciones de confirmaciones.

Rebasing es una opción interesante, que puede ayudarlo a arreglar su rama antes de pasar por una fusión, y aliviar el dolor de tener que hacer una gran confirmación de fusión.

CyberFoxar
fuente