Tengo un viejo compromiso que hice hace unas semanas. Quiero restaurar solo un archivo de esa confirmación. ¿Qué debo hacer?
git
git-checkout
Varun Achar
fuente
fuente
Respuestas:
Esto no alterará HEAD, simplemente sobrescribirá el archivo local
path/to/file.txt
Consulte man git-rev-parse para ver las posibles especificaciones de revisión allí (por supuesto, un simple hash (like
dd9bacb
) funcionará bien)No te olvides de cometer el cambio (después de una revisión ...)
fuente
revision-specification
que ya que eso es lo que el OP preguntó :)shacommit~1
(ej .git checkout 0f4bbdcd~1 -- path/to/file.txt
:) para obtener la confirmación inmediatamente antes.git checkout [Revision_Key] -- path/to/file
.fuente
git checkout
puede manejar archivos individuales (ver respuesta de sehe), no es necesario copiar y pegar.HEAD
,ORIG_HEAD
o cualquiera de los que se combina con^
/~
/@
notación de estilo.Necesitaba restaurar un archivo reciente comprometido en git. Entonces, solo para reiterar y dar otra perspectiva, debe hacerlo ejecutando los siguientes dos pasos:
git log -3
Esto muestra las tres confirmaciones más recientes. Lea los comentarios y el nombre del autor para limitar la versión exacta que desea. Escriba esa identificación de confirmación larga (es decir, b6b94f2c19c456336d60b9409fb1e373036d3d71) para la versión de confirmación que desea.
git checkout b6b94f2c19c456336d60b9409fb1e373036d3d71 - myfile.java
Pase el id de confirmación Y el nombre del archivo que desea restaurar. Asegúrese de tener un espacio antes y después del guión doble.
Hay muchas otras formas de hacerlo. Pero este es el más simple que puedo recordar. Espero que ayude.
NOTA: Si está dentro de la ruta / carpeta de su proyecto, entonces no es necesario escribir la ruta completa del archivo en el comando de pago.
fuente
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 quegit 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).Asumiendo que el hash commit es
abcdef
el comando se vería así:que (por defecto) lo coloca en el árbol de trabajo. Si desea colocar el cambio directamente en el índice para que se pueda confirmar de inmediato:
o con nombres cortos de opciones:
fuente