El comando Git merge en Git


Lección 42 / 53

El comando Git merge en Git

Git Guía Git Guía Git español

El comando git merge en Git se utiliza para combinar varias secuencias de commit en un historial unificado. En los casos de uso más frecuentes, git merge se usa para combinar dos ramas.

Por lo general, especialmente para aquellos que usan plataformas como GitHub o GitLab como servidores para el desarrollo compartido, las operaciones de merge se realizan directamente desde la plataforma en el repositorio remoto cuando los cambios en una solicitud de pull/merge se aprueban e incluyen en la rama principal.

Sin embargo, es útil conocer la mecánica básica del merge, ya que es un proceso esencial en Git. En particular es importante considerar que:

  • en Git la operación de merge combina secuencias de commit en una única secuencia de commit unificada
  • hay dos formas de realizar el merge: Fast Forward y Three Way
  • Git puede completar el merge automáticamente si no hay secuencias de commit en conflicto

Antes de continuar con una fusión (merge), es recomendable realizar algunos pasos preparatorios para asegurarse de que la operación se desarrolle sin problemas, especialmente si está ejecutando localmente el merge de branch remotos:

  • identificar los dos branch que se desean fusionar, el que recibirá cambios (por ejemplo. main) y lo que se desea unir (por ejemplo new-feature)
  • hacer fetch y pull en dichos branch de los respectivos cambios remotos
  • hacer checkout en la working copy local del branch que recibirá los cambios

Se podrá entonces iniciar con el merge a través del comando git merge <branch-to-be-merged>.

El modo real y el resultado de la fusión dependen del estado respectivo de las dos ramas.

Fast Forward Merge en Git

git checkout -b new-feature main

git add <file>
git commit -m "Start a feature"
git add <file>
git commit -m "Finish a feature"

git checkout main
git merge new-feature

 

Fast Forward Merge

Fast Forward Merge

 

Una merge fast-forward en Git puede ocurrir cuando hay una ruta lineal desde el HEAD de la rama que se fusionará hasta el HEAD de la rama de destino. En este caso, Git no realiza una fusión real, simplemente mueve el HEAD de la rama objetivo al HEAD de la rama a fusionar.

Las dos historias se combinaron de manera efectiva, pero la historia de nuestra rama nueva fue, por así decirlo, la progresión normal de la historia de la rama principal.

Three Way Merge en Git

git branch new-feature

git add <file>
git commit -m "Fix a bug"

git checkout new-feature

git add <file>
git commit -m "Start a feature"
git add <file>
git commit -m "Finish a feature"

git checkout main
git merge new-feature

 

Three Way Merge

Three Way Merge

 

En el caso de que las ramas sean divergentes, Git debe combinar las dos historias a través de un three-way merge. En este modo, se usa un tipo de commit dedicado, el merge commit para unir las dos historias.

Los commit de merge son únicas de otros commit, ya que tienen dos commit principales. Al crear un commit de merge, Git intentará fusionar automáticamente las historias separadas. Si Git encuentra que la misma parte de un archivo ha cambiado en ambos historiales, no podrá combinarlos automáticamente. Este escenario es un conflicto de control de versiones y Git requerirá la entrada del usuario para continuar.
El nombre “three way” indica que Git necesita tres commit para descubrir cómo fusionarse: las dos commit HEAD de las dos ramas y su padre común.

Guía Git en español 1 ¿Qué es Git? 2 Nacimiento de Git 3 Principales características de Git 4 Línea de comando UI en Git 5 Cómo instalar Git 6 5 comandos Git para desarrolladores individuales 7 5 comandos Git para desarrollar en colaboración 8 Repository en Git 9 Commit en Git 10 Working Copy en Git 11 Staging Area en Git 12 Branch en Git 13 Remote en Git 14 Inicializar un nuevo repository con git init 15 Crear una copia de un repository remoto en Git con git clone 16 Configurar las opciones de Git con git config 17 El comando Git add en Git 18 El comando Git commit en Git 19 El comando Git diff en Git 20 El comando Git stash en Git 21 .gitignore : los archivos ignored en Git 22 El comando Git status en Git 23 El comando Git log en Git 24 El comando Git tag en Git 25 El comando Git blame en Git 26 El comando Git checkout en Git 27 El comando Git revert en Git 28 El comando Git reset en Git 29 El comando Git rm en Git 30 La opción Git commit –amend en Git 31 Git rebase –interactive en Git 32 Atajos para comandos frecuentes en Git 33 Repository compartido en Git 34 El modelo Fork & pull 35 El comando Git remote en Git 36 Los principales repository remote de Git: Github, Gitlab y Bitbucket 37 El comando Git fetch en Git 38 El comando Git push en Git 39 El comando Git pull en Git 40 El comando Git branch en Git 41 El comando Git checkout en Git 42 El comando Git merge en Git 43 Resolver un merge conflict en Git 44 Entender mejor el contenido de los commit durante un conflicto de merge en Git 45 Workflow Git centralizado 46 Workflow Git feature branching 47 Workflow Git trunk-based 48 Enfoque “forking” en Git 49 Gitflow en Git 50 Mensajes de commit en Git 51 Tagging & Versioning en Git 52 La opción merge en Git 53 La opción rebase en Git

© 2022 Aulab. Todos los derechos reservados • P.IVA: IT07647440721 • Política de privacidad