WARNING: I’M NEW TO GIT!!
I installed git on my local machine. I also installed it on a server on our network. On the server, I created C:\git to house my code and shared that directory. So, I did:
$cd C:\git
$git init --bare
I set up a new remote on my local machine to point to the shared directory of the “git server”
$git remote add shared "//shared/path/to/git/folder"
$cd C:\path\to\my\source\code
$git init
$git add -A
$git commit -m "initial push"
$git push shared master
$git checkout -b test
$git push shared test
So, now that I’ve done all that, when I go back to the server, I am expecting to see the server copies of my source code there, but I don’t see it. Am I missing the entire point of git or am I doing something wrong?
Git stores your source as “binary large objects” (BLOBs, or just “objects” for short). A bare repository, like the one on your server, contains ONLY those BLOBs, not a “working tree”, which is what your cloned repository has, which is why you can’t see your files as normal on the server. They’re there, uniquely named based on their content, in the
objectsdirectory. Try this experiment:You’ll see a subdirectory called
2a. Look inside that directory:You’ll see a file called
93d00994fbd8c484f38b0423b7c42e87a55d48. The directory name (2a) along with the filename make up the SHA1 hash of the contents of the filehello.txt(the string “hello”, that is).Now if you type:
You’ll see the contents of
hello.txt! That’s the object that’ll be stored in the bare repository, which is why you don’t just see the filehello.txtsitting there; it’s been given a special name, compressed, and put in theobjectsdirectory.As your repository grows, things get a little more complicated, because as the size of your content, and the number of your commits grow, Git starts packing similar files together; all of the information is still there, but it’s further compressed for efficiency.
Another way you can reassure yourself that your files are indeed being stored on your server, you can create another clone (not a bare one!) and you’ll have a working tree with all of your files in it.