Revertir Conservando Cambios con --no-commit
A veces, quieres deshacer los cambios de un commit pero conservarlos en tu directorio de trabajo para modificarlos. Por ejemplo, podrías querer corregir un error en el commit en lugar de descartarlo por completo. La opción --no-commit (o -n) es perfecta para esto.
Primero, vamos a restablecer nuestro repositorio al estado anterior a nuestra última reversión, para poder probar un enfoque diferente. Usaremos git reset para esto. Este comando mueve el puntero HEAD y --hard actualiza los archivos en tu directorio de trabajo para que coincidan.
git reset --hard HEAD~1
Este comando elimina el commit de "Revert" que acabamos de hacer. Puedes confirmarlo ejecutando git log --oneline.
Ahora, revertiremos el commit "no deseado" nuevamente, pero esta vez usando la opción --no-commit. Recuerda usar el hash del commit "Add a second, unwanted line".
Por favor, reemplaza <your-commit-hash> con el hash real de tu terminal.
git revert --no-commit <your-commit-hash>
Esta vez, no aparece ningún editor. La reversión está preparada, pero no confirmada (committed). Verifica el estado de tu repositorio:
git status
La salida mostrará que story.txt está preparado para ser confirmado (staged for commit):
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: story.txt
Los cambios del commit revertido están ahora en tu área de preparación (staging area). Ahora puedes modificarlos. Reemplacemos la línea no deseada por una mejor. Abre story.txt con nano:
nano story.txt
El archivo se verá como después de la reversión en el Paso 2. Añade una línea nueva y mejor al final del archivo:
And they lived happily ever after.
Guarda y sal de nano (Ctrl+O, Enter, Ctrl+X).
Ahora, añade tus cambios al área de preparación y confírmalos con un mensaje nuevo y descriptivo:
git add story.txt
git commit -m "Replace unwanted line with a proper conclusion"
Finalmente, verifica el log y el contenido del archivo para ver el resultado:
git log --oneline
cat story.txt
El log muestra tu nuevo commit, y story.txt tiene el contenido corregido. Has revertido con éxito un commit conservando y modificando sus cambios.