Git Branching y Merging
Herramientas y Comandos Avanzados
Herramientas y Comandos Avanzados en Git
Git ofrece una amplia variedad de herramientas y comandos avanzados que pueden mejorar significativamente tu flujo de trabajo. Este capítulo introduce algunas de estas herramientas y comandos, profundizando en sus usos y aplicaciones.
Stash: Guardar Cambios Temporales
El comando git stash
te permite guardar cambios temporales que aún no quieres comprometer. Es útil cuando necesitas cambiar de rama pero no quieres perder tu trabajo actual.
Guardar Cambios en el Stash:
bash
Aplicar los Cambios del Stash:
bash
Listar los Stashes:
bash
Aplicar y Eliminar el Último Stash:
bash
Cherry-Pick: Aplicar Commits Específicos
El comando git cherry-pick
permite aplicar commits específicos de una rama a otra. Es útil cuando quieres traer únicamente ciertos cambios en lugar de una fusión completa.
Aplicar un Commit Específico:
bash
Ejemplo:
bash
Bisect: Encontrar Commits Problemáticos
El comando git bisect
te permite aislar el commit que introdujo un error utilizando una búsqueda binaria entre un rango de commits.
Iniciar Bisect:
bash
Marcar el Commit Algo Bueno:
bash
Marcar el Commit Algo Malo:
bash
Git iterará a través de los commits para encontrar el que introdujo el error. Una vez encontrado, usa el siguiente comando para terminar:
bash
Rebasing Interactivo: Modificar el Historial de Commits
El rebase interactivo es una herramienta poderosa para reescribir el historial de commits, permitiéndote editar, combinar y reordenar commits.
Iniciar un Rebase Interactivo:
bash
Reflog: Registro de Referencias
El comando git reflog
permite ver todos los cambios realizados en las referencias (como HEAD) en tu repositorio local. Es útil para recuperar commits perdidos.
Ver el Reflog:
bash
Amending: Modificar el Último Commit
Si cometiste un error en el último commit, puedes modificarlo sin crear un nuevo commit usando git commit --amend
.
Corregir el Último Commit:
bash
Hooks: Automatización de Tareas
Git Hooks son scripts que se ejecutan automáticamente en ciertos eventos. Pueden ayudar a automatizar flujos de trabajo, como validaciones pre-commit, despliegues, o integraciones con otras herramientas.
Ejemplos de Hooks:
- pre-commit: Se ejecuta antes de que se realice un commit.
- pre-push: Se ejecuta antes de que se realice un push.
- post-merge: Se ejecuta después de que se complete una fusión.
Los hooks se encuentran en el directorio .git/hooks
y pueden configurarse escribiendo scripts en Shell, Python, Ruby, etc.
Ejemplo de pre-commit hook en Bash:
bash
Submodules: Git en Subdirectorios
Los submódulos permiten incluir y gestionar repositorios Git dentro de otro repositorio Git. Son útiles para gestionar dependencias de código separadas.
Añadir un Submódulo:
bash
Inicializar y Actualizar Submódulos:
bash
Configuraciones Avanzadas
Aliases
Personaliza comandos largos y repetitivos definiendo aliases en tu configuración de Git:
bash
Configuración de Identidad
Puedes definir identidades diferentes para distintos repositorios:
bash
Resumen
- Stash: Guardar y recuperar cambios temporales.
- Cherry-Pick: Aplicar commits específicos a otra rama.
- Bisect: Encontrar el commit que introdujo un error.
- Reflog: Ver el historial de cambios de referencias.
- Amending: Corrección del último commit.
- Hooks: Automatización de tareas con scripts.
- Submodules: Gestionar dependencias dentro de un repositorio.
- Configuraciones Avanzadas: Aliases y configuración de identidad.
El uso de estas herramientas y comandos avanzados puede aumentar significativamente tu eficiencia y organización al trabajar con Git. En el siguiente capítulo, exploraremos la conclusión y recomendaciones finales para el uso de Git.
- Introducción a Git
- Configuración Inicial y Flujo de Trabajo Básico
- Conceptos Básicos de Ramas en Git
- Creación y Eliminación de Ramas
- Navegación entre Ramas
- Fusión (Merging) de Ramas
- Resolución de Conflictos de Fusión
- Estrategias de Fusión: Fast-Forward vs. Recursive
- Rebase en Git: Conceptos y Usos
- Fusión vs. Rebase: Cuándo Usar Cada uno
- Ramas Remotas y su Gestión
- Git Flow y otros Modelos de Flujo de Trabajo
- Buenas Prácticas para Branching y Merging
- Herramientas y Comandos Avanzados
- Conclusión y Recomendaciones Finales