Git
Chapters ▾ 2nd Edition

A3.4 Appendix B: Comandos de Git - Ramificar y Fusionar

Ramificar y Fusionar

Hay sólo un puñado de comandos que implementan la mayor parte de la funcionalidad de ramificación y fusión en Git.

git branch

El comando git branch es en realidad una especie de herramienta de gestión de ramas. Puede listar las ramas que tienes, crear una nueva rama, eliminar ramas y cambiar el nombre de las ramas.

La mayor parte de Ramificaciones en Git está dedicada al comando branch y es utilizado a lo largo de todo el capítulo. En primer lugar, lo introducimos en Crear una Rama Nueva y examinamos la mayor parte de sus otras características (listar y borrar) en Gestión de Ramas.

En Hacer Seguimiento a las Ramas usamos la opción git branch -u para establecer una rama de seguimiento.

Finalmente, examinamos algo de lo que hace en segundo plano en Referencias Git.

git checkout

El comando git checkout se usa para cambiar de rama y revisar el contenido de tu directorio de trabajo.

En primer lugar, encontramos el comando en Cambiar de Rama junto con el comando git branch.

Vemos cómo usarlo para iniciar el seguimiento de ramas con el indicador --track en Hacer Seguimiento a las Ramas.

Lo usamos para reintroducir los conflictos de archivos con --conflict=diff3 en Revisando Los Conflictos.

Entramos en más detalle sobre su relación con git reset en Reiniciar Desmitificado.

Finalmente, examinamos algún detalle de implementación en La CABEZA (HEAD).

git merge

La herramienta git merge se utiliza para fusionar uno o más ramas dentro de la rama que tienes activa. A continuación avanzará la rama actual al resultado de la fusión.

El comando git merge fue introducido por primera en Procedimientos Básicos de Ramificación. A pesar de que se utiliza en diversos lugares en el libro, hay muy pocas variaciones del comando merge — en general, sólo git merge <branch> con el nombre de la rama individual que se desea combinar.

Cubrimos cómo hacer una fusión aplastada (squashed merge) (donde Git fusiona el trabajo, pero finge como si fuera simplemente un nuevo commit sin registrar la historia de la rama que se está fusionando) al final de Proyecto público bifurcado.

Repasamos mucho sobre el proceso de fusión y dirección, incluyendo el comando -Xignore-all-whitespace y el indicador --abort para abortar un problema de fusión en Fusión Avanzada.

Aprendimos cómo verificar las firmas antes de la fusión si tu proyecto está usando fimas GPG en Firmando Commits.

Finalmente, aprendimos sobre la fusión de subárboles en Convergencia de Subárbol.

git mergetool

El comando git mergetool simplemente lanza un ayudante de fusión externo en caso de tener problemas con una combinación en Git.

Lo mencionamos rápidamente en Principales Conflictos que Pueden Surgir en las Fusiones y entramos en detalle sobre cómo implementar tu propia herramienta de fusión externa en Herramientas externas para fusión y diferencias.

git log

El comando git log se utiliza para mostrar la historia registrada alcanzable de un proyecto desde la más reciente instantánea confirmada hacia atrás. Por defecto sólo se mostrará la historia de la rama en la que te encuentres, pero pueden ser dadas diferentes e incluso múltiples cabezas o ramas desde la que hacer el recorrido. También se utiliza a menudo para mostrar las diferencias entre dos o más ramas a nivel de commit.

Este comando se utiliza en casi todos los capítulos del libro para mostrar la historia de un proyecto.

Introducimos el comando y lo cubrimos con cierta profundidad en Ver el Historial de Confirmaciones. Allí vemos las opciones -p y --stat para tener una idea de lo que fue introducido en cada commit y las opciones --pretty y --oneline para ver el historial de forma más concisa, junto con unas simples opciones de filtrado de fecha y autor.

En Crear una Rama Nueva lo utilizamos con la opción --decorate para visualizar fácilmente donde se encuentran nuestros punteros de rama y también utilizamos la opción --graph para ver la apariencia de las historias divergentes.

En Pequeño equipo privado y Rangos de Commits cubrimos la sintaxis branchA..branchB al usar el comando git log para ver que commits son únicos a una rama en relación a otra rama. En Rangos de Commits repasamos esto bastante extensamente.

En Registro de Fusión y Tres puntos cubrimos el uso del formato branchA...branchB y la sintaxis --left-right para ver que está en una rama o en la otra pero no en ambas. En Registro de Fusión también vemos como utilizar la opción --merge para ayudarnos con la depuración de conflictos de fusión así como el uso de la opción --cc para ver conflictos de fusión en tu historia.

En Nombres cortos de RefLog usamos la opción -g para ver el reflog de Git a través de esta herramienta en lugar de hacer un recorrido de la rama.

En Buscando vemos el uso de las opciones -S y -L para hacer búsquedas bastante sofisticados de algo que sucedió históricamente en el código como ver la historia de una función.

En Firmando Commits vemos como usar --show-signature para añadir una cadena de texto de validación a cada commit en la salida de git log basado en si fue válidadmente firmado o no.

git stash

El comando git stash se utiliza para almacenar temporalmente el trabajo no confirmado con el fin de limpiar el directorio de trabajo sin tener que confirmar el trabajo no acabado en una rama.

Básicamente esto es enteramente cubierto en Guardado rápido y Limpieza.

git tag

El comando git tag se utiliza para dar un marcador permanente a un punto específico en el historial del código fuente. Generalmente esto se utiliza para cosas como las liberaciones (releases).

Este comando se introduce y se trata en detalle en Etiquetado y lo usamos en la práctica en Etiquetando tus versiones.

También cubrimos cómo crear una etiqueta con firma GPG tag con el indicador -s y verificamos uno con el indicador -v en Firmando tu trabajo.