Al volver a leer la pregunta, parece que desea revertir los cambios que se encuentran en su árbol de trabajo y no los cambios que se han cometido previamente, pero algunas de las otras respuestas hacen sonar como que mi lectura puede ser incorrecta. ¿Puedes aclarar?
Si los cambios son sólo en su copia de trabajo a continuación, la forma más sencilla de hacerlo es poner en escena los cambios que desea mantener con:
git add -i <file>
luego tirar los cambios que no desee mantener por el control de la versión índice:
git checkout -- <file>
Entonces unstage los cambios si no desea que ellos todavía en escena:
git reset -- <file>
Esta receta solo revierte los cambios seleccionados al archivo (o los archivos que especifique) y no crea ningún compromiso temporal que luego deba revertirse.
Si desea aplicar selectivamente sólo algunos de los cambios realizados en confirmaciones anteriores a continuación, puede restablecer un archivo a un estado comprometida anterior primero:
git reset <commit_before_first_unwanted_change> -- <file>
continuación, puede seguir la receta anterior de git add -i <file>
poner en escena esos cambios que desea mantener, git checkout -- <file>
para descartar los cambios no deseados y git reset -- <file>
para 'dejar de lado' los cambios.
esto confirmará los cambios que quiero mantener ¿no? No quiero comprometer esos cambios todavía. mm tal vez estoy tomando compromisos demasiado en serio. Tal vez debería relajarme ahora, ya que todo está en un repositorio local. por cierto, ¿qué hace el git reset --soft HEAD^do? – Pradeep
"git reset --soft HEAD ^" deshace una confirmación en el sentido de que mantiene el directorio y el índice de trabajo como estaba, y mueve de vuelta la confirmación de la rama uno. –
Gracias Jakub. Paolo ¿por qué un reinicio suave a la cabeza - 1 se requiere aquí? la confirmación parcial y el restablecimiento completo deberían ser suficientes para mantener algunos cambios y descartar otros? – Pradeep