Operaciones avanzadas de Git
Una vez que domines las operaciones básicas de Git, las operaciones avanzadas te ayudarán a gestionar y optimizar tu repositorio de código de manera más eficiente.
A continuación se presentan algunas operaciones avanzadas comunes y sus explicaciones detalladas:
- Staging interactivo: selecciona por bloques los cambios que se van a preparar, controlando con precisión el contenido de los commits.
- Git Stash: guarda temporalmente el progreso del trabajo, lo que facilita el cambio de tareas.
- Git Rebase: mueve los cambios de una rama a otra, manteniendo un historial de commits lineal.
- Git Cherry-Pick: selecciona un commit específico y lo aplica a la rama actual.
1. Staging interactivo (Interactive Staging)
git addEl comando permite añadir de forma selectiva archivos o partes de archivos al área de preparación; esto es muy útil cuando se manejan cambios complejos.
- Uso
git add -p: selecciona por bloques los cambios que se van a preparar.
git add -p
Después de ejecutar este comando, Git mostrará los cambios del archivo por bloques, y puedes elegir si preparar cada bloque. Las opciones comunes incluyen:
y: preparar el bloque actualn: omitir el bloque actuals: dividir el bloque actuale: editar manualmente el bloque actualq: salir del modo de preparación
2. Git Stash: guardar temporalmente el progreso de trabajo
git stashEl comando te permite guardar temporalmente los cambios del directorio de trabajo actual, de modo que puedas cambiar a otra rama o realizar otras tareas.
Guardar el progreso de trabajo actual:
git stash
Ver el progreso almacenado:
git stash list
Aplicar el progreso almacenado más reciente:
git stash apply
Aplicar y eliminar el progreso almacenado más reciente:
git stash pop
Eliminar un stash específico:
git stash drop stash@{n}
Vaciar todos los stashes:
git stash clear
3. Git Rebase: cambiar de base
git rebaseEl comando se utiliza para mover los cambios de una rama a otra. Ayuda a mantener un historial de commits lineal y reduce los conflictos al fusionar.
Hacer rebase de la rama actual sobre la rama especificada:
git rebase <branchname>
Por ejemplo, para hacer rebase de la rama actual sobremainla rama:
git rebase main
- Rebase interactivo:
git rebase -i <commit>
El rebase interactivo te permite editar, eliminar o fusionar commits durante el proceso de rebase. Las opciones comunes incluyen:
pick: conservar el commitreword: modificar el mensaje del commitedit: editar el commitsquash: fusionar el commit actual con el anteriorfixup: fusionar el commit actual con el anterior sin conservar el mensaje del commitdrop: eliminar el commit
4. Git Cherry-Pick: seleccionar commits
git cherry-pickEl comando te permite seleccionar un commit específico y aplicarlo a la rama actual. Es muy útil cuando necesitas trasladar cambios específicos de una rama a otra.
Seleccionar un commit:
git cherry-pick <commit>
Por ejemplo,abc123aplicar el commit a la rama actual:
git cherry-pick abc123
Manejo de conflictos de cherry-pick: si surgen conflictos durante el cherry-pick, después de resolverlos usagit cherry-pick --continuepara continuar con el cherry-pick.
Ejemplos de operaciones
A continuación se muestra un ejemplo completo que ilustra cómo usar estas operaciones avanzadas:
Staging interactivo:
git add -p
Guardar el progreso de trabajo:
git stash
Ver el progreso almacenado:
git stash list
Aplicar el progreso almacenado:
git stash apply
Hacer rebase de la rama actual sobremainla rama:
git rebase main
Rebase interactivo, editar el historial de commits:
git rebase -i HEAD~3
Editar el historial de commits, como fusionar y renombrar commits.
Hacer cherry-pickfeatureun commit específico de la rama amainla rama:
git checkout main git cherry-pick abc123Otras extensiones