DEV Community

Cover image for Manual de supervivencia Git de Ned 📚
The Eagle 🦅
The Eagle 🦅

Posted on • Updated on

Manual de supervivencia Git de Ned 📚

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 📋

  1. 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.
  2. Episodio 2: Tenemos una Nueva Prioridad, Houston

    • Cómo guardar archivos no rastreados con git stash.
    • Gestionar stashes y recuperarlos cuando sea necesario.
  3. Episodio 3: ¡Crisis de CoolFeature!

    • Usar git cherry-pick para seleccionar y aplicar commits específicos.
  4. Episodio 4: El Drama de "Cambié de Opinión"

    • Recuperar commits eliminados con git reflog.
  5. 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:

Estructura de carpetas de React en Vite

Refactorizamos nuestro archivo main.tsx porque queremos que MapsApp.tsx sea nuestro archivo principal de aplicación, pero accidentalmente introducimos un error.

Commit con un error en main.tsx

No nos damos cuenta y procedemos a hacer commit y push al repositorio remoto:

Realizando el proceso de commit

(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:

Git log

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:

Seleccionando el commit hash

Luego, procede a escribir:

git checkout 4d7490e src/main.tsx
Enter fullscreen mode Exit fullscreen mode

¡Y lo has restaurado—tadaa!

Archivo restaurado

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:

Cambios no commiteados

Puedes confirmar que están no commiteados con un git status:

Git status

Y tu git log solo tiene el primer commit, donde creaste tu proyecto:

Git log

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
Enter fullscreen mode Exit fullscreen mode

Voy con restore:

Archivo limpio

¡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:

Creando 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
Enter fullscreen mode Exit fullscreen mode

Ahora, puedes ver que el archivo ya no está con nosotros:

Archivo guardado en stash

Pero si escribes:

git stash list
Enter fullscreen mode Exit fullscreen mode

Todavía está aquí:

Lista de stashes

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}
Enter fullscreen mode Exit fullscreen mode

Voy con pop, y puedes ver que ha vuelto:

Archivo extraído del stash

Cuando intento usar git stash list, no muestra nada porque al final fue extraído de la lista:

Lista de stash vacía


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!

Solicitud urgente

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
Enter fullscreen mode Exit fullscreen mode

Luego, selecciona el commit específico:

git cherry-pick 714cf87
Enter fullscreen mode Exit fullscreen mode

Cherry-picking el commit

¡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í:

Git log de main


Episodio 4: El Drama de "Cambié de Opinión"

Supongamos que creaste una nueva característica:

feature

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.

Git reset

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
Enter fullscreen mode Exit fullscreen mode

Reflog

Ahora tienes el hash para restaurar tu commit:

Restaurar

¡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)