revertir - volver a un commit anterior git




Deshacer modificaciones de copia de trabajo de un archivo en Git? (8)

Después de la última confirmación, modifiqué un montón de archivos en mi copia de trabajo, pero quiero deshacer los cambios en uno de esos archivos, al restablecerlo al mismo estado que la confirmación más reciente.

Sin embargo, solo quiero deshacer los cambios de copia de trabajo de solo un archivo, nada más con él.

¿Cómo puedo hacer eso?


Esta respuesta es para el comando necesario para anular cambios locales que se encuentran en varios archivos específicos en la misma o múltiples carpetas (o directorios). Esta respuesta aborda específicamente la pregunta donde un usuario tiene más de un archivo pero el usuario no desea deshacer todos los cambios locales:

si tiene uno o más archivos, podría aplicar el comando samne ( git checkout -- file ) a cada uno de esos archivos enumerando cada una de sus ubicaciones separadas por espacio como en:

git checkout -- name1/name2/fileOne.ext nameA/subFolder/fileTwo.ext

Cuidado con el espacio abve entre name1 / name2 / fileOne.ext nameA / subFolder / fileTwo.ext

Para múltiples archivos en la misma carpeta:

Si necesita descartar los cambios para todos los archivos en un directorio determinado, use el proceso de pago de git de la siguiente manera:

git checkout -- name1/name2/*

El asterisco de lo anterior hace el truco de deshacer todos los archivos en esa ubicación bajo nombre1 / nombre2.

Y, de manera similar, lo siguiente puede deshacer los cambios en todos los archivos para varias carpetas:

git checkout -- name1/name2/* nameA/subFolder/*

de nuevo, tenga en cuenta el espacio entre nombre1 / nombre2 / * nombreA / subcarpeta / * en lo anterior.

Nota: nombre1, nombre2, nombreA, subcarpeta: todos estos nombres de carpetas de ejemplo indican la carpeta o el paquete donde pueden residir los archivos en cuestión.


Para mi solo esta funciono

git checkout -p filename


Restauré mis archivos usando la ID de SHA. Lo que hago es git checkout <sha hash id> <file name>


Si aún no ha presionado o compartido su compromiso:

git diff --stat HEAD^...HEAD | \
fgrep filename_snippet_to_revert | cut -d' ' -f2 | xargs git checkout HEAD^ --
git commit -a --amend

Si su archivo ya está almacenado (sucede cuando hace un git add, etc. después de editar el archivo), elimine los cambios en el escenario.

Utilizar

git reset HEAD <file>

Entonces

git checkout <file>

Si aún no está en escena, solo use

git checkout <file>

Si ya está confirmado, puede revertir el cambio para el archivo y confirmar nuevamente, y luego rechazar el nuevo compromiso con el último compromiso.


Solo usa

git checkout filename

Esto reemplazará el nombre de archivo con la última versión de la rama actual.

ADVERTENCIA: sus cambios serán descartados, no se mantiene ninguna copia de seguridad.


He hecho a través de Git Bash:

(use "git checkout -- <file>..." to discard changes in working directory)

  1. Estado de Git. [Así que hemos visto un archivo wad modificado.]
  2. git checkout - index.html [he cambiado en el archivo index.html:
  3. Estado git [ahora esos cambios fueron eliminados]





undo