【问题标题】:git clone --bare from ssh: objects folder emptygit clone --bare from ssh: 对象文件夹为空
【发布时间】:2016-05-12 02:09:34
【问题描述】:

我在服务器上有一个工作目录,我可以使用交互式 ssh 访问它,也可以使用 sshfs 挂载我的家,我想创建一个裸存储库以开始共享它。

在做

git clone --bare mount_point/path

git clone --bare ssh://user@server/path

给出两个不同的结果。特别是,主要区别在于对象文件夹。第一个具有000b、...子文件夹和pack 子文件夹中的某些文件。而第二种只有infopackpack中的文件与第一种不同。因此,两个克隆的裸仓库的大小是不同的。

不过,我可以成功地执行 git log 或例如 git diff。

谁能告诉我发生了什么?是不是 git-clone over ssh 压缩了存储库中的更多对象?还是我在某处丢失了信息?

非常感谢

【问题讨论】:

    标签: git ssh sshfs


    【解决方案1】:

    git 在处理相同卷/相同计算机上的存储库时会优化克隆存储库存储。查看--no-hardlinks--localgit clone --help 的选项。实际上可以强制它制作“真实副本”,但通常您不需要。

    更新:好的,没有硬链接。在网络传输之前 git 打包对象,在接收端丢失,并且这些包按接收到的方式存储,无需解包。 git gc 也是如此。顾名思义,.git/objects/pack/ 包含打包对象。要查看特定包文件的内容,请使用git verify-pack -v .git/objects/pack/pack-<smth>.idx。查看this doc 获取教程。

    【讨论】:

    • 其实不是这样,因为工作目录在不同的文件系统上,所以这种情况下不能产生硬链接。另外,您是否知道 objects/pack 中的文件是什么?
    猜你喜欢
    • 2017-07-13
    • 2012-11-07
    • 2016-07-12
    • 2016-09-30
    • 1970-01-01
    • 2020-04-18
    • 2012-08-04
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多