不确定我的git存储库在哪里存储文件

我做了一个远程的git仓库

mkdir /var/www/html/myproject.git chmod 0770 /var/www/html/myproject.git ln -s /var/www/html/myproject.git myproject.git cd myproject.git git --bare init 

并成功连接到它并将其克隆在我自己的机器上

 git clone [email protected]:myproject.git 

然后上传一些文件

 git push 

当再次尝试显示存储库已经是最新的。

但是,我在远程服务器上四处查看,实际上找不到git存储这些文件的位置! 它不在/var/www/html/ nor /home/git ,我设法find的唯一东西是包含我在/var/www/html/myproject.git/refs/heads/master进行的初始提交的id的HEAD文件/var/www/html/myproject.git/refs/heads/master 。 (所以我知道推工作)

这些文件可能在哪里?

答案实际上是所有的文件都存储在objects/pack目录作为散列文件,当裸仓库。 你不能直接从那里获取文件。

如果偶然的人试图做我所做的,并在服务器上有一组可以通过git(例如,Web服务器)pipe理的文件,那么您需要这样做:

制作一个你想让文件可以访问的存储库的副本(确保git可以写入,特别是里面的.git目录)

 mkdir /path/to/clone/repo chmod -R 0775 /path/to/clone/repo cd /path/to/clone/repo git clone /path/to/bare/repo.git 

在包含以下行的裸存储库中创build一个新的更新后的挂钩:

 vi /path/to/bare/repo.git/hooks/post-update #!/bin/sh # Update the real-file cloned repository unset GIT_DIR cd /path/to/cloned/repo git fetch git reset --hard 

确保它是可执行的

 chmod a+x /path/to/bare/repo.git/hooks/post-update 

将一个提交推送到裸存储库,并注意从remote:开始的行remote:查看是否发生任何错误。