Restaurar archivo de confirmación anterior en git

Resuelto Varun Achar asked hace 13 años • 4 respuestas

Tengo un compromiso antiguo que hice hace unas semanas. Quiero restaurar solo un archivo de esa confirmación. ¿Qué debo hacer?

Varun Achar avatar Jul 08 '11 18:07 Varun Achar
Aceptado
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...)

sehe avatar Jul 08 '2011 11:07 sehe
  1. Consulte el archivo de su antigua confirmación a través de git checkout [Revision_Key] -- path/to/file.
  2. Agregue, confirme y presione según corresponda.
Urs Reupke avatar Jul 08 '2011 11:07 Urs Reupke

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 checkoutfue 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 sourceparámetro (que en su caso será un hash de confirmación).

Suponiendo que el hash de confirmación sea abcdefel 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
mjarosie avatar Aug 27 '2019 14:08 mjarosie