Vi una respuesta a una pregunta aquí que ayuda a restaurar un archivo eliminado en git.
La solución fue
git checkout <deleting_commit>^ -- <deleted_file_path>
¿Qué hace el carácter de intercalación ( ^)? Lo he visto en otros lugares haciendo cosas muy útiles en git. Es mágico. ¿Alguien me lo estropea y me dice lo que hace?

^) es el carácter de escape en cmd.exe. Cada vez que intenté usarlo para ver si sería útil, en realidad no pasaba nada, lo que explica por qué los resultados nunca fueron diferentes. > _> Estúpido cmd.exe. Puedes escapar duplicándolo o citándolo:git log master^^ogit log "master^"Respuestas:
HEAD^significa el primer padre de la punta de la rama actual.Recuerda que git commits puede tener más de un padre.
HEAD^es la abreviatura deHEAD^1, y también puede abordar,HEAD^2etc., según corresponda.Puede llegar a los padres de cualquier compromiso, no solo
HEAD. También puede retroceder de generación en generación: por ejemplo,master~2significa el abuelo de la punta de la rama maestra, favoreciendo al primer padre en casos de ambigüedad. Estos especificadores pueden encadenarse arbitrariamente, por ejemplo ,topic~3^2. Ver la respuesta relacionada a ¿Cuál es la diferencia entreHEAD^yHEAD~en Git?Para obtener todos los detalles, consulte la sección "Especificación de revisiones" de
git rev-parse --help.fuente
HEAD^^^devuelve la tercera confirmación anterior, es decir, es equivalente aHEAD~~~?Significa "padre de". Entonces
HEAD^significa "el padre de la CABEZA actual". Incluso puede encadenarlos:HEAD^^significa "el padre del padre del HEAD actual" (es decir, el abuelo del HEAD actual),HEAD^^^significa "el padre del padre del padre del HEAD actual", y así sucesivamente.fuente
El
^(caret) también se puede usar al especificar rangos .fuente
Aquí hay una explicación visual. Supongamos que tiene una historia como esta:
Cuando la característica se fusionó en maestra,
Cse creó con dos antepasados. Git asigna estos números de antepasados. Al ancestro de la línea principalBse le asigna 1 y al ancestro de la característicaFse le asigna 2.Así se
C^1refiereBy seC^2refiere aF.C^es un alias paraC^1.Solo lo usarías alguna vez
<rev>^3. si hubieras realizado una fusión de tres ramas.fuente
El cursor se refiere al padre de un compromiso particular. Por ejemplo, se
HEAD^refiere al padre del comité HEAD actual. (también, seHEAD^^refiere al abuelo).fuente
El quilate representa un desplazamiento de confirmación (primario). Entonces, por ejemplo,
HEAD^significa "una confirmación de HEAD" yHEAD^^^significa "tres confirmaciones de HEAD".fuente
El (^) obtiene la fuente principal del comando, es decir, HEAD ^ obtendrá el padre de HEAD.
fuente
Greg Bacon dio un gran enlace, pero es bastante denso. Los documentos introductorios de Git en línea también presentan revisiones y especificadores de rango:
https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection
fuente