Git en Windows: ¿Dónde están mis files?

ADVERTENCIA: ¡SOY NUEVO EN GIT!

Instalé git en mi máquina local. También lo instalé en un server de nuestra networking. En el server, creé C:\git para alojar mi código y compartir ese directory. Así que lo hice:

 $cd C:\git $git init --bare 

Configuré un nuevo control remoto en mi máquina local para señalar el directory compartido del "server git"

 $git remote add shanetworking "//shanetworking/path/to/git/folder" $cd C:\path\to\my\source\code $git init $git add -A $git commit -m "initial push" $git push shanetworking master $git checkout -b test $git push shanetworking test 

Entonces, ahora que hice todo eso, cuando regrese al server, espero ver las copys del server de mi código fuente allí, pero no lo veo. ¿Me estoy perdiendo todo el punto de git o estoy haciendo algo mal?

Git almacena su fuente como "objects binarys grandes" (BLOB, o simplemente "objects" para abreviar). Un repository desnudo, como el que está en su server, contiene SOLAMENTE esos BLOB, no un "tree de trabajo", que es lo que tiene su repository clonado, por lo que no puede ver sus files de forma normal en el server. Están ahí, nombrados de manera única en function de su contenido, en el directory de objects . Prueba este experimento:

 git init echo "hello" > hello.txt git add hello.txt dir .git/objects 

Verás un subdirectory llamado 2a . Mira dentro de ese directory:

 dir .git/objects/2a 

Verá un file llamado 93d00994fbd8c484f38b0423b7c42e87a55d48 . El nombre del directory ( 2a ) junto con el nombre del file conforman el hash SHA1 del contenido del file hello.txt (la cadena "hola", es decir).

Ahora si escribe:

 git cat-file -p 2a93d00994fbd8c484f38b0423b7c42e87a55d48 

¡Verás el contenido de hello.txt ! Ese es el object que se almacenará en el repository desnudo, por lo que no solo ve el file hello.txt allí sentado; se le ha dado un nombre especial, comprimido y puesto en el directory de objects .

A medida que su repository crece, las cosas se vuelven un poco más complicadas, porque a medida que crecen el tamaño de su contenido y el número de sus compromisos, Git comienza a empaquetar files similares; toda la información todavía está allí, pero está comprimida para mayor eficiencia.

Otra forma en que puede asegurarse de que sus files están almacenados en su server, puede crear otro clon (¡no uno!) Y tendrá un tree de trabajo con todos sus files.

Inicializó el repository bare . No tiene estructura de código fuente. No contiene un "tree de trabajo" en absoluto. En cambio, contiene todos los contenidos del subdirectory .git directamente en el directory principal.

Entonces, si quiere una copy de trabajo en su server, debe clone su código desde el repository simple. A continuación, pull últimos commits para sincronizarlo.

¡Necesitas comprometer tus files!

 $git add -A $git commit -m "First commit"