La guía definitiva de Git Merge y git Rebase

Bienvenido a nuestra guía definitiva de los comandos git merge y git rebase. Este tutorial te enseñará todo lo que necesitas saber sobre la combinación de múltiples ramas con Git.

Git Merge

el comando git merge fusionará cualquier cambio que se haya realizado en la base de código en una rama separada con tu rama actual como una nueva confirmación.,

la sintaxis del comando es la siguiente:

git merge BRANCH-NAME

por ejemplo, si actualmente está trabajando en una rama llamada dev y desea fusionar cualquier cambio nuevo que se haya realizado en una rama llamada new-features, emitirá el siguiente comando:

git merge new-features

nota: si hay cambios no confirmados en tu rama actual, git no te permitirá fusionar hasta que todos los cambios en tu rama actual hayan sido confirmados., Para manejar los cambios, usted puede:

Crear una nueva rama y confirmar los cambios

git checkout -b new-branch-namegit add .git commit -m "<your commit message>"

Guárdalos

git stash # add them to the stashgit merge new-features # do your mergegit stash pop # get the changes back into your working tree

Abandonar todos los cambios

git reset --hard # removes all pending changes

Git Rebase

Reajuste de una sucursal en Git es una forma de pasar la totalidad de una rama a otra punto en el árbol. El ejemplo más simple es mover una rama más arriba en el árbol., Digamos que tenemos una rama que diverge de la rama master en el punto a:

 /o-----o---o--o-----o--------- branch--o-o--A--o---o---o---o----o--o-o-o--- master

Cuando rebase puede moverla de esta manera:

 /o-----o---o--o-----o------ branch--o-o--A--o---o---o---o----o--o-o-o master

para rebase, asegúrese de tener todas las confirmaciones que desee en la rebase en su rama master. Echa un vistazo a la rama que quieres rebase y escribe git rebase master(donde master es la rama en la que quieres rebase)., por ejemplo, una rama que se basó en otra rama (llamémosla característica) se rebasa en master:

 /---o-o branch /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master

después de git rebase master branch o git rebase master cuando haya comprobado la rama, obtendrá:

 /---o-o-o-o---o--o------ feature----o--o-o-A----o---o--o-o-o--o--o- master \---o-o branch

git rebase interactivo en la consola

para usar git rebase en la consola con una lista de confirmaciones, puede elegir, editar o soltar en la rebase:

  • enter git rebase -i HEAD~5 con el último número siendo cualquier número de Confirmaciones de más reciente hacia atrás que desea revisar.,
  • en vim, presione esc, luego i para comenzar a editar la prueba.
  • En el lado izquierdo puede sobrescribir el pick con uno de los comandos a continuación. Si desea aplastar un commit en uno anterior y descartar el mensaje de commit, ingrese f en el lugar del pick del commit.
  • guardar y salir del editor de texto.
  • cuando se detenga rebase, realice los ajustes necesarios y, a continuación, utilice git rebase --continue hasta que rebase tenga éxito.,
  • si se rebasa con éxito, entonces debe forzar la inserción de sus cambios con git push -f para agregar la versión rebasada a su repositorio remoto.
  • si hay un conflicto de fusión, hay varias formas de solucionarlo, incluyendo seguir las sugerencias de esta guía. Una forma es abrir los archivos en un editor de texto y eliminar las partes del código que no desea. A continuación, utilice git add <file name> seguido de git rebase --continue., Puede omitir la confirmación en conflicto ingresando git rebase --skip, detener el cambio de base ejecutando git rebase --abort en su consola.

Merge Conflicts

Un Conflicto de fusión es cuando realiza confirmaciones en ramas separadas que alteran la misma línea de maneras conflictivas.,la versión del archivo para guardar un mensaje de error similar al siguiente:

CONFLICT (content): Merge conflict in resumé.txt Automatic merge failed; fix conflicts and then commit the result.

Si usted mira la etiqueta resumé.txt archivo en un editor de código, usted puede ver donde el conflicto se llevó a cabo:

<<<<<<< HEADAddress: 808 South Street=======Address: 505 North Street>>>>>>> updated_address

Git añadido algunas líneas adicionales para el archivo:

  • <<<<<<< HEAD
  • =======
  • >>>>>>> updated_address

Git Merge vs Git Rebase

Ambos git merge y git rebase son muy útiles comandos, y uno no es mejor que el otro., Sin embargo, hay algunas diferencias muy importantes entre los dos comandos que usted y su equipo deben tener en cuenta.

Cuando se ejecutagit merge, se crea una confirmación de fusión adicional. Siempre que esté trabajando en su repositorio local, tener demasiadas confirmaciones de fusión puede hacer que el historial de confirmaciones parezca confuso. Una forma de evitar la confirmación de fusión es usar git rebase en su lugar.

git rebase es una característica muy poderosa. Dicho esto, también es arriesgado si no se usa de la manera correcta., git rebase altera el historial de confirmaciones, así que úsalo con cuidado. Si el cambio de base se realiza en el repositorio remoto, entonces puede crear muchos problemas cuando otros desarrolladores intentan extraer los últimos cambios de código del repositorio remoto. Recuerde ejecutar solamente git rebase en un repositorio local.

eso es todo lo que necesitas saber para fusionar y rebase con lo mejor de ellos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *