Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Inquietud sobre comando git

EStuve investigando por mi cuenta sobre como revertir un commit, pero me aparecian varios, como git revert, git hard, git reset, y no comprendo bien la diferencia entre cada uno, hasta ahorita el unico que me ha funcionado es el git reset, que me borra el commit tanto del VS code y del remoto.

1 respuesta

Hola Estudiante,

Es normal que surjan dudas con tantas opciones para "deshacer" cambios en Git. Aquí te explico las diferencias principales entre los comandos que mencionas:

1. git revert

  • Qué hace: Crea un nuevo commit que deshace los cambios introducidos por un commit anterior.
  • Ventaja: No reescribe el historial, lo que lo hace seguro para repositorios compartidos, ya que evita conflictos con otros colaboradores.
  • Uso típico: Cuando ya se han compartido commits en el repositorio remoto y se quiere "deshacer" un cambio sin alterar el historial.

2. git reset

  • Qué hace: Mueve el puntero de HEAD a un commit anterior, lo que efectivamente "olvida" los commits posteriores.
  • Modalidades:
    • --soft: Mueve HEAD pero deja los cambios de los commits eliminados en el área de staging. Esto es útil si deseas combinar cambios o rehacer commits.
    • --mixed (por defecto): Mueve HEAD y deja los cambios en tu directorio de trabajo, pero los quita del área de staging.
    • --hard: Mueve HEAD y elimina todos los cambios de los commits posteriores, tanto del área de staging como del directorio de trabajo.
  • Advertencia: Usar git reset (especialmente con --hard) reescribe el historial. Esto es problemático si ya has compartido esos commits con otros (por ejemplo, en el remoto), ya que puede generar conflictos y confusión.

3. git reset --hard (a veces referido simplemente como git hard)

  • Qué hace: Es la modalidad más "drástica" de git reset, ya que elimina todos los cambios posteriores al commit al que reseteas, sin posibilidad de recuperarlos fácilmente.
  • Uso típico: Cuando estás trabajando en tu rama local y deseas deshacer commits de forma irreversible sin que estos queden en tu historial.

Resumen:

  • Si ya compartiste los commits (por ejemplo, se han subido al repositorio remoto), lo más recomendable es usar git revert, ya que genera un commit que deshace los cambios sin alterar el historial compartido.
  • Si aún no has hecho push o estás trabajando en una rama personal, puedes usar git reset (con cuidado) para mover el puntero HEAD a un estado anterior.
  • git reset --hard borra completamente los commits y cambios, por lo que se debe usar solo si estás seguro de que no necesitas esos cambios y no afectará a otros colaboradores.

Cada comando tiene su utilidad dependiendo del contexto y del flujo de trabajo que estés utilizando. ¡Espero que esta explicación te ayude a elegir la opción adecuada para cada situación!

Por favor, no olvides marcar este post como solucionado. ¡Es de gran ayuda para la comunidad! ✓ Sigue adelante con tus estudios.