Introducción
¡Bienvenido a al Manual de supervivencia de Git de Ned! 📚 En este manual, aprenderás comandos esenciales de Git como git checkout
y git restore
para deshacer cambios, git stash
para guardar trabajo no commiteado temporalmente, git cherry-pick
para extraer commits específicos de una rama a otra y git reflog
para recuperar "commits perdidos". Ya sea que estés corrigiendo un error, cambiando prioridades porque tu jefe lo decidió, o restaurando código eliminado, estos comandos te ayudarán a manejar escenarios comunes con confianza. ¡Así que, adentrémonos y dominemos Git juntos!
Esto es lo que aprenderemos hoy:
Índice 📋
-
Episodio 1: Primer Día de Trabajo y Errores
- Usando
git checkout
para restaurar archivos de un commit anterior. - Guardar cambios no commiteados con
git restore
.
- Usando
-
Episodio 2: Tenemos una Nueva Prioridad, Houston
- Cómo guardar archivos no rastreados con
git stash
. - Gestionar stashes y recuperarlos cuando sea necesario.
- Cómo guardar archivos no rastreados con
-
Episodio 3: ¡Crisis de CoolFeature!
- Usar
git cherry-pick
para seleccionar y aplicar commits específicos.
- Usar
-
Episodio 4: El Drama de "Cambié de Opinión"
- Recuperar commits eliminados con
git reflog
.
- Recuperar commits eliminados con
Conclusión
Episodio 1: Primer Día de Trabajo y Errores
Supongamos que estamos construyendo una aplicación de mapas para tu lugar de trabajo, y tenemos la siguiente estructura de carpetas:
Refactorizamos nuestro archivo main.tsx
porque queremos que MapsApp.tsx
sea nuestro archivo principal de aplicación, pero accidentalmente introducimos un error.
No nos damos cuenta y procedemos a hacer commit y push al repositorio remoto:
(Por si tienes curiosidad, estoy usando gitmoji para mensajes de commit geniales.)
Ahora, ejecutas tu proyecto y te das cuenta de que hay un error en main.tsx
porque la consola te lo dice, pero por alguna razón, no puedes encontrarlo—tal vez estás nervioso, así que...
¿Qué puedo hacer para que no me regañen?
Consejo #1: Restaurar Archivos Salva Vidas
En este escenario, para simplificar, supongamos que ya has hecho push del proyecto antes de la refactorización como buena práctica (de lo contrario, estás en problemas). Usas git log
, y te muestra lo siguiente:
Dado que tienes un archivo anterior bueno, simplemente puedes usar git log
y seleccionar el commit hash que deseas restaurar. En nuestro caso, es este:
Luego, procede a escribir:
git checkout 4d7490e src/main.tsx
¡Y lo has restaurado—tadaa!
Oye, solo tengo un commit en mi proyecto, ¿puedo revertirlo?
Consejo #2: Usa git restore
para Cambios No commiteados
Tienes los siguientes cambios no commiteados en main.tsx
:
Puedes confirmar que están no commiteados con un git status
:
Y tu git log
solo tiene el primer commit, donde creaste tu proyecto:
Tienes dos opciones, una fácil y una difícil:
# La fácil
git restore src/main.tsx
# La difícil
git checkout -- src/main.tsx
Voy con restore
:
¡Ahora nuestro archivo está limpio de nuevo! ¡Hurra!
Episodio 2: Tenemos una Nueva Prioridad, Houston
Ahora, tu jefe o líder de equipo decide que es un buen día para cambiar las prioridades (porque eso es lo suyo). Supongamos que estás creando una nueva página llamada MyCoolPage.tsx
:
Ahora, tienes que decidir: ¿Debería hacer commit y luego rebasear los commits, seleccionar los que quiero y hacer squash para que quede limpio?
Voy a perder demasiado tiempo solo para ese cambio más adelante, ¿Qué puedo hacer?
Consejo #3: Guárdalo, Hermano
¡Ten cuidado en este caso! Este ejemplo especial implica la creación de un nuevo archivo que no existe en tu repositorio, así que necesitas usar:
git stash --include-untracked
# O la bandera más corta
git stash -u
Ahora, puedes ver que el archivo ya no está con nosotros:
Pero si escribes:
git stash list
Todavía está aquí:
El nombre del stash es stash@{0}
.
Ahora, tenemos múltiples opciones:
# Podemos extraer el stash y eliminarlo de la lista con un simple
git stash pop
# O aplicarlo y dejarlo en la lista para que podamos acceder a él más tarde con
git stash apply stash@{número de tu stash}
Voy con pop
, y puedes ver que ha vuelto:
Cuando intento usar git stash list
, no muestra nada porque al final fue extraído de la lista:
Episodio 3: ¡Crisis de CoolFeature!
Estás trabajando en una rama diferente para una característica llamada feature/myCoolFeature
, que tiene tres requisitos. Ya has completado dos de ellos, así que tienes dos commits en esa rama.
Ahora, tu jefe te dice: Oye, necesitamos la CoolFeature
que implementaste desde tu rama, pero solo la primera, ¡y la necesitamos ahora!
Podrías crear una rama desde la actual, eliminar el commit HEAD y fusionarlo en main
, pero eso es demasiado para una tarea tan simple.
Oh, hombre, necesito tiempo para esto y ellos lo necesitan ahora, ¿hay una forma más rápida?
Consejo #4: Usa Cherry-Pick para Obtener Ese Commit
Ve a tu rama main
con git checkout main
y obtén el log de la otra rama con:
git log feature/myCoolFeature
Luego, selecciona el commit específico:
git cherry-pick 714cf87
¡Y Linus Torvalds (creador de Git y Linux) salva el día de nuevo! Y si usas git log
, puedes ver que tus cambios están allí:
Episodio 4: El Drama de "Cambié de Opinión"
Supongamos que creaste una nueva característica:
La agregas y haces
commit, pero cambias de opinión y decides eliminarla, así que procedes a buscar en Google cómo eliminar un commit
. Encuentras que con un git reset --hard HEAD~1
, procedes a usarlo.
Estás bien hasta que te das cuenta de que quieres reutilizar algo de código, pero ahora cuando usas git log
, no puedes encontrarlo. Piensas:
Se ha ido para siempre, ahora voy a perder tiempo...
Consejo #5: Si No Lo Encuentras en git log
, Es Hora de reflog
Solo revisa la magia de este comando:
git reflog
Ahora tienes el hash para restaurar tu commit:
¡Otro final feliz!
Conclusión 🎓
¡Felicidades, has aprobado tu manual de supervivencia Git! 🎉 Al igual que el manual de supervivencia Escolar de Ned 📚, ahora tienes un buen conjunto de herramientas para navegar por los complicados pasillos del control de versiones. Desde usar git checkout
para corregir esos errores accidentales, guardar cambios no commiteados como un profesional, hacer cherry-pick de commits cuando la presión es alta, hasta rescatar trabajos perdidos con git reflog
, estás listo para enfrentar cualquier desafío de Git con confianza. Así que, pon en práctica estos consejos y mantén tus proyectos funcionando sin problemas.
Agradecimientos especiales a Midu sin su libro de Git, no habría podido hacer este artículo. 🙏💻✨
¡Gracias por leer!
Déjame saber herman@, tus pensamientos o cualquier sugerencia sobre Git en los comentarios abajo 👇
Top comments (0)