我制作了一个远程 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
,我唯一设法找到的是 HEAD 文件,其中包含我在/var/www/html/myproject.git/refs/heads/master
. (所以我知道推动有效)
这些文件可能在哪里?
答案实际上是
objects/pack
在裸存储库中时,所有文件都作为散列文件存储在目录中。您不能直接从那里获取文件。如果有人碰巧尝试做我所做的事情并在服务器上有一组可由 git 管理的文件(例如,网络服务器),那么您需要改为执行以下操作:
克隆你希望文件可以访问的存储库(确保 git 可以写入它,尤其是里面的 .git 目录)
在包含以下行的裸存储库中创建一个新的更新后挂钩:
确保它是可执行的
将提交推送到裸存储库并记下开头的行
remote:
以查看是否发生任何错误。