Restaurar archivo de confirmación anterior en git
Tengo un compromiso antiguo que hice hace unas semanas. Quiero restaurar solo un archivo de esa confirmación. ¿Qué debo hacer?
git checkout 'master@{7 days ago}' -- path/to/file.txt
Esto no alterará HEAD, simplemente sobrescribirá el archivo local.path/to/file.txt
Consulte man git-rev-parse para conocer posibles especificaciones de revisión allí (por supuesto, un hash simple (como dd9bacb
) funcionará bien)
No olvides confirmar el cambio (después de una revisión...)
- Consulte el archivo de su antigua confirmación a través de
git checkout [Revision_Key] -- path/to/file
. - Agregue, confirme y presione según corresponda.
Todas las respuestas mencionan git checkout <tree-ish> -- <pathspec>
. A partir de git v2.23.0 hay un nuevo método de restauración de git que se supone que asume parte de lo que git checkout
fue responsable. Vea los aspectos más destacados de los cambios en el blog de github .
El comportamiento predeterminado de este comando es restaurar el estado de un árbol de trabajo con el contenido proveniente del source
parámetro (que en su caso será un hash de confirmación).
Suponiendo que el hash de confirmación sea abcdef
el comando, se vería así:
git restore --source=abcdef file_name
que (por defecto) lo coloca en el árbol de trabajo. Si desea colocar el cambio directamente en el índice para que pueda confirmarse de inmediato:
git restore --source=abcdef --worktree --staged file_name
o con nombres de opciones cortos:
git restore -sabcdef -W -S file_name