En primer lugar, siempre vale la pena señalar que git reset --hard
es un comando potencialmente peligroso, ya que descarta todos los cambios no confirmados. Por seguridad, siempre debe verificar que la salida de git status
esté limpia (es decir, vacía) antes de usarla.
Inicialmente que dicen lo siguiente:
así que sé que Git seguimiento de los cambios que hago a mi solicitud, y se aferra a ellos hasta que confirme los cambios, pero aquí es donde yo estoy colgado:
En caso de que esto revele una suposición errónea, debería decir que esto no es correcto. Git solo registra el estado de los archivos cuando los etapa (con git add
) o cuando crea una confirmación. Una vez que haya creado un compromiso que tenga sus archivos de proyecto en un estado particular, son muy seguros, pero hasta entonces, Git no está realmente "rastreando cambios" en sus archivos. (por ejemplo, incluso si hace git add
para organizar una nueva versión del archivo, que sobrescribe la versión previamente escenificada de ese archivo en el área de transición.)
En su pregunta a continuación, ir a preguntar lo siguiente:
Cuando quiero volver a una confirmación anterior que utilizo: git git restablecer la cabeza y vuelve --hard: cabeza está ahora en 820f417 micro
¿Cómo puedo volver los archivos en mi disco duro a la confirmación anterior?
Si lo hace entonces git reset --hard <SOME-COMMIT>
Git:
- Haga su rama actual (típicamente
master
) volver al punto en el <SOME-COMMIT>
.
- Luego haga que los archivos en su árbol de trabajo y el índice ("área de ensayo") sean los mismos que en las versiones comprometidas en
<SOME-COMMIT>
.
HEAD
puntos a su rama actual (o cometer actual), por lo que todo lo que git reset --hard HEAD
va a hacer es tirar cualquier cambio no comprometidos que tiene.
Supongamos que el compromiso correcto al que desea volver es f414f31
. (Puede encontrar que a través de cualquier navegador o git log
historia.) A continuación, tiene algunas opciones diferentes dependiendo de exactamente lo que quiere hacer:
- Cambiar la rama actual para apuntar a la mayor cometen en su lugar. Puedes hacerlo con
git reset --hard f414f31
. Sin embargo, esto está reescribiendo el historial de su sucursal, por lo que debe evitarlo si ha compartido esta sucursal con alguien. Además, los commits que realizó después de f414f31
ya no estarán en el historial de su rama master
.
Crea una nueva confirmación que represente exactamente el mismo estado del proyecto que f414f31
, pero simplemente agrega eso al historial para que no pierdas ningún historial. Puede hacer que el uso de los pasos sugeridos en this answer - algo así como:
git reset --hard f414f31
git reset --soft [email protected]{1}
git commit -m "Reverting to the state of the project at f414f31"
¿Qué quiere decir revirtiendo los archivos en el disco duro de nuevo a esa confirmación anterior? Si 820f417 es la confirmación deseada, los archivos ahora deben tener el contenido exacto en esa confirmación. – kennytm
Si desea deshacer todos los cambios, después de 'git reset --hard', debe' git checkout '. –
jweyrich
Realmente no entiendo la idea de [duplicar] y luego hago una nueva pregunta, cuando las respuestas no son satisfactorias. Es una receta para desastres en términos de más duplicados ... –