我在服务器上有一个工作目录,我可以使用交互式ssh访问,也可以使用sshfs安装我的家,我想创建一个裸存储库来开始共享它。
否则
git clone --bare mount_point/path
和
git clone --bare ssh://user@server/path
给出两个不同的结果。特别是,主要区别在于对象文件夹。第一个包含00
,0b
,...子文件夹和pack
子文件夹中的某些文件。第二个只有info
和pack
,而pack
中的文件与第一个案例不同。因此,两个克隆裸露回购物的大小不同。
尽管如此,我可以成功地执行git log或者例如git diff。
有谁能告诉我发生了什么事?可能是因为ssh上的git-clone会压缩存储库中的更多对象吗?或者我在哪里丢失信息?
非常感谢
答案 0 :(得分:1)
git在处理相同卷/同一台计算机上的存储库时优化克隆的存储库存储。查看--no-hardlinks
的{{1}},--local
等选项。实际上,它可以强迫它制作一个真正的副本。但通常你不需要。
更新:好的,没有硬链接。在网络传输git包之前,接收端缺少对象,这些包在收到时存储,无需解压缩。 git clone --help
也是如此。 git gc
包含打包对象,顾名思义。要查看特定包文件的内容,请使用.git/objects/pack/
。查看this doc获取教程。