Todos Deshacer Ramas Remoto Stash Historial Fusión

Referencia de Situaciones a Comandos Git

Git es poderoso pero su sintaxis de comandos puede ser difícil de recordar, especialmente para operaciones menos comunes. Esta herramienta mapea situaciones reales de Git a sus comandos exactos, con explicaciones en lenguaje claro y advertencias para operaciones que no se pueden deshacer.

Operaciones Git Destructivas vs Seguras

Algunas operaciones de Git son seguras y reversibles (commits, ramas, stashes). Otras alteran permanentemente el historial o pueden causar pérdida de datos si se usan descuidadamente:

  • Seguras: git stash, git branch, git checkout, git merge, git commit
  • Precaución necesaria: git reset --hard, git push --force, git rebase (reescribe historial), git clean -fd
  • Nunca hacer en ramas compartidas: force-push a main/master, rebase de commits públicos

Buenas Prácticas de Git

  • Siempre cree una rama antes de hacer cambios — nunca trabaje directamente en main
  • Haga commits frecuentes con mensajes claros y descriptivos
  • Use git status y git diff antes de hacer commit
  • Prefiera git revert sobre git reset --hard en ramas compartidas
  • Use git stash para guardar temporalmente trabajo en progreso

Preguntas Frecuentes sobre Git

¿Cómo deshago mi último commit en Git sin perder los cambios?

Use git reset --soft HEAD~1 para deshacer el último commit pero mantener todos los cambios en el área de staging. Use git reset HEAD~1 (modo mixed, el predeterminado) para deshacer el commit y quitar los cambios del staging pero mantenerlos en su directorio de trabajo. Solo use git reset --hard HEAD~1 si desea descartar permanentemente todos los cambios — esto no se puede deshacer una vez realizado.

¿Cómo elimino una rama local y remota?

Elimine una rama local con git branch -d nombre-rama (seguro, requiere que la rama esté fusionada) o git branch -D nombre-rama (forzar eliminación). Elimine una rama remota con git push origin --delete nombre-rama. Para limpiar referencias de seguimiento remoto obsoletas localmente, ejecute git fetch --prune o git remote prune origin.

¿Cuál es la diferencia entre git merge y git rebase?

git merge crea un nuevo commit de fusión que une dos ramas preservando el historial completo. git rebase reproduce sus commits sobre otra rama, produciendo un historial lineal más limpio. Use merge para ramas públicas y compartidas — es seguro y no destructivo. Use rebase solo en ramas de características locales antes de fusionar. Nunca haga rebase de commits ya enviados a una rama remota compartida — reescribe el historial y obliga a otros colaboradores a reconciliar historiales divergentes.

¿Cómo veo qué cambió en el último commit?

Use git show para ver el diff del commit más reciente incluyendo mensaje, autor, fecha y parche completo. Para un resumen sin el diff completo, use git show --stat. Para comparar dos commits específicos, use git diff commit1 commit2. Para ver el historial de un archivo específico, use git log --follow -p -- nombre-archivo.

Herramientas Relacionadas para Desarrolladores