Cómo usar Git Merge

Dec 31, 2022
Programming

Git utiliza ramas para aislar las corrientes de desarrollo, para evitar que la rama de liberación estable se contamine. Traer trabajo en una rama a la corriente principal significa fusionar ramas. Así es como lo haces.

¿Qué es una fusión en GIT?
Preparándose para fusionar una rama en Git
Realizando una fusión
Realizando una fusión rápida en Git
Cómo resolver conflictos de fusiones en GIT
Todo se fusiona eventualmente

¿Qué es una fusión en GIT?

Git fue diseñado para hacer que la ramificación sea simple y rápida. En contraste con otros sistemas de control de versiones, la ramificación en GIT es una cuestión trivial. Especialmente en proyectos de varios desarrolladores, la ramificación es una de las herramientas organizativas principales de GIT.

Ramas Sandbox Nuevos esfuerzos de desarrollo para que el código se pueda modificar o agregar sin afectar el código en otras ramas, especialmente en la rama principal o maestra. Esto generalmente contiene la versión estable de su base de código.

Aislar estos cambios de su versión de código estable tiene mucho sentido. Pero tarde o temprano, el nuevo código será probado, revisado y estampado para ser enrollado en la rama maestra. En ese momento, debe fusionar su rama en la rama maestra.

En realidad, las ramas pueden tener sub-ramas, por lo que puede fusionar su rama en alguna otra rama en lugar de la rama maestra. Solo recuerde que las fusiones siempre toman una rama y fusionen en un objetivo rama, cualquiera que sea esa rama. Si quieres fusionar tu rama maestra en otra rama, incluso puedes hacerlo también.

Como la mayoría de las acciones en GIT, realiza fusiones en su repositorio local y las empuja a su repositorio remoto.

Preparándose para fusionar una rama en Git

Tenemos un pequeño proyecto de desarrollo con un repositorio de Git local y un repositorio de git remoto. Creamos una rama llamada "Bugfix14" de la rama "Maestro" y trabajamos en una solución a un error.

Ese trabajo se completa y hemos probado nuestro código. Todo funciona como se esperaba. Queremos rodar esos cambios en la rama maestra para que nuestra solución sea parte de la próxima versión del software.

Hay una pequeña preparación por hacer antes de realizar la fusión. Necesitamos asegurarnos de que la rama objetivo, en este caso, la rama "maestra", y la rama que vamos a fusionar en ella, ambos están actualizados.

  • En rama bugfix14 : Esta es nuestra rama actual.
  • Su rama está actualizada con "Origin/Bugfix" : La rama en nuestro repositorio local tiene el mismo historial de confirmación que la rama en el repositorio remoto. Eso significa que son idénticos.
  • Nada para cometer No hay cambios en el área de puesta en escena que no se haya cometido.
  • árbol de trabajo limpio : No hay cambios no establecidos en el directorio de trabajo.

Todos ellos indican que la sucursal está actualizada, y tenemos claro que continuar. Si alguno de estos indicara que existían cambios, tendríamos que organizarlos, cometerlos y llevarlos al control remoto. Si alguien más había trabajado en estos archivos, es posible que necesitemos extraer sus cambios del repositorio remoto.

Comprobar la rama, vamos a fusionar para simplificar el proceso de fusión. También nos permite verificar que está actualizado. Echemos un vistazo a la rama maestra.

Obtenemos las mismas confirmaciones de que la rama "maestra" está actualizada.

RELACIONADO: Cómo elegir el flujo de trabajo git & amp; Modelo de ramificación que es adecuado para su equipo

Realizando una fusión

La rama "Bugfix14" estaba ramificada de la rama "maestro". Ha habido un compromiso con la rama "maestra" después de que se creó la rama "Bugfix14". Ha habido un par de compromisos con la rama "Bugfix14".

Nos hemos asegurado de que nuestras dos sucursales estén actualizadas, y hemos revisado la rama "maestra". Podemos emitir el comando para fusionar la rama "Bugfix14" en la rama "Maestro".

La fusión tiene lugar. La rama "Bugfix14" todavía existe, pero ahora los cambios que se hicieron en esa rama se han fusionado en la rama "Maestro".

En este caso, el comando de fusión realiza un fusión de tres vías . Solo hay dos ramas, pero hay tres compromisos involucrados. Son el jefe de cualquiera de las ramas, y un tercer confirmación que representa la acción de fusión en sí.

Para actualizar nuestro repositorio remoto, podemos usar el Git Push dominio.

Algunas personas prefieren eliminar las ramas laterales una vez que las hayan fusionado. Otros tienen cuidado de preservarlos como un registro de la verdadera historia del desarrollo del proyecto.

Si desea eliminar la rama, puede hacerlo usando el rama de git comando con el -d (eliminar) opción.

A Eliminar la rama En el repositorio remoto, use este comando:

Tendrás un historial de comet comisión lineal, pero no será la verdadera historia.

RELACIONADO: Cómo eliminar las ramas Git en repositorios locales y remotos

Realizando una fusión rápida en Git

Si no ha hecho ningún compromiso con la rama "maestra", su historial se verá así. También se verá esto si tienes rebajado Su rama de desarrollo para que esté unida al final de la rama "maestra".

Debido a que no hay compromisos en la rama "Maestro", para fusionar la rama "Bugfix15", todo lo que tiene que hacer es apuntar el puntero de la cabeza "maestro" al último confirmación de la rama "Bugfix15".

Git realizará una fusión rápida Siempre que pueda . Si se compromete con la rama "maestra" significa que una fusión rápida no es posible, Git usará un fusión de tres vías .

No puedes fuerza Una fusión rápida, después de todo, puede que no sea posible, pero puede declarar que será una fusión rápida o nada. Hay una opción que le indica a GIT que use una fusión rápida si puede, pero no hacer una fusión de tres vías si no puede. La opción es -ff solo (SOLO FUNCIONAR SOLO FUNCIONARIO).

Esto fusiona la rama "Bugfix15" en la rama "Maestro", pero solo si es posible una fusión rápida.

En este caso, ha habido compromisos con la rama "maestra", por lo que no es posible una fusión rápida.

Cómo resolver conflictos de fusiones en GIT

Si las mismas partes del mismo archivo se han cambiado en ambas ramas, las ramas no se pueden fusionar. Se requiere interacción humana para resolver las ediciones en conflicto.

Aquí, hemos realizado cambios en un archivo llamado "Rot.C" en una rama llamada "Bugfix17" que queremos fusionar con la rama "maestra". Pero "Rot.C" también se ha cambiado en la rama "maestra".

Cuando intentamos fusionarlo, recibimos una advertencia de que hay conflictos. Git enumera los archivos conflictivos y nos dice que la fusión falló. Podríamos retroceder completamente usando el --abortar opción:

Pero resolver las fusiones no es tan aterrador como parece. Git ha hecho un trabajo para ayudarnos. Si editamos uno de los archivos conflictivos, en nuestro caso, solo tenemos uno, encontraremos las secciones del código en conflicto resaltadas para nosotros.

Cada conflicto está limitado por siete personajes menos de lo que & lt; & lt; & lt; & lt; & lt; & lt; & lt; "Y siete personajes más grandes" & gt; & gt; & gt; & gt; & gt; & gt; & gt; ", Con siete iguales signos" ======= " entre ellos.

  • El código por encima de los signos iguales es de la rama que se está fusionando en .
  • El código debajo del signo igual es el código de la rama que está intentando unir .

Puede buscar fácilmente uno de los conjuntos de siete caracteres y pasar del conflicto al conflicto a través de su archivo. Para cada conflicto, debe elegir qué conjunto de ediciones va a conservar. Debe editar el código que está rechazando y las líneas de siete caracteres que GIT ha agregado.

Vamos a mantener el código de la rama "Bugfix17". Después de editar, nuestro archivo se ve así.

Ahora podemos continuar con la fusión. Pero tenga en cuenta que usamos el comprometerse ordenar hacerlo, no el unir dominio.

Comprometemos el cambio al organizar el archivo y cometiéndolo como de costumbre. Verificaremos el estado antes de hacer la confirmación final.

La fusión está completa. Ahora podemos llevar esto a nuestro repositorio remoto.

RELACIONADO: Cómo arreglar, editar o deshacer cometas Git (cambiar el historial de git)

Todo se fusiona eventualmente

Eventualmente, todas las ramas deben fusionarse, de modo que los cambios en ellas no se huérfanos y se olviden.

Fusionar sucursales es fácil, pero lidiar con los conflictos puede complicarse en equipos ocupados y más grandes. Resolver conflictos puede requerir la aportación de cada desarrollador solo para explicar qué hace su código y por qué hicieron sus cambios. Debe comprender que, antes de poder tomar una decisión informada sobre qué ediciones mantener.

  • Cómo cambiar el nombre de una rama en Git
  • Cómo revisar una rama de git remota
  • Cómo guardar los cambios en GIT
  • Cómo cambiar de ramas en Github
  • Git Rebase: Todo lo que necesitas saber
  • El OnePlus 11 está aquí, pero con un comienzo difícil
  • Microsoft Edge está obteniendo chat de IA y un nuevo look en Windows
  • Los mejores auriculares para los fanáticos del iPhone acaban de alcanzar su precio más bajo

Programming - Artículos más populares

Cómo cambiar el nombre de una rama en Git

Programming Dec 19, 2022

La ramificación es un ejercicio trivial en GIT. Desafortunadamente, las tareas triviales rara vez reciben la debida atención, y los errores ocurren. Si has nombrado incorrecto a una rama, ten..


Categorías