2011-11-16 7 views
13

Quiero aprender más sobre el funcionamiento interno del GIT, así que corrieron estos comandos:'git-gato -p fichero <sha1>': 'fatal: No es un nombre de objeto válido' en los objetos al azar de .git/objetos

cd .git/objects/62 

ls 
00cb2f01089db22aca24675272a16712e89747 
0ee798881329430bfef6c558be7b14c1f0676f 
1087f408e2f2bd782d53a1211a7418fee4f6a7 
a6a71f3bd5a3af882f3f0ec4fad4c672055746 
f95e69f344b52c5038d922260189475626e69a 

git cat-file -p 00cb2f01089db22aca24675272a16712e89747 

y obtuvo el siguiente error:

fatal: Not a valid object name 00cb2f01089db22aca24675272a16712e89747 

¿Por qué lo consigo?

Lo intenté como 10 veces (para diferentes archivos de diferentes directorios dentro de .git/objects) y obtuve el mismo error.

¿Cómo puedo ver el contenido real de los archivos (ya sea un blob, árbol o confirmación)?

Respuesta

15

Usted no tiene que cd en el almacén de objetos .git, pero usted tiene que proporcionar el hash SHA1 completo:

git cat-file -p 621087f408e2f2bd782d53a1211a7418fee4f6a7 

Git almacena sus objetos en .git/objects, distribuidos en 256 carpetas para mantener el tamaño del directorio hacia abajo. Los primeros dos caracteres de cada hash se utilizan como nombre de directorio, los 38 caracteres restantes se utilizan como nombre de archivo.

+0

bien, pero no hacer un cd en el objeto .git no responde mis preguntas ... ¿Por qué me aparece el error? y ¿cómo veo el contenido real del objeto? –

+1

@IgorPopov: Responde a su pregunta. Intentó mostrar un objeto que no existía. Eche un vistazo de cerca a su hash y al hash de mi respuesta. ¿Ve la diferencia? – knittl

+0

Agregué a la pregunta el resultado real de "ls". Como puede ver, hay ** archivo ** con el nombre que comienza con "** 62 **". El archivo git cat falla con cada uno de estos archivos. Si está en la salida "ls" entonces supongo que existe ... –

Cuestiones relacionadas