git clone --bare 来自 ssh : objects folder empty

标签 git ssh sshfs

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

正在做

git clone --bare mount_point/path


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

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

不过,在这两种情况下,我都可以成功地执行 git log 或例如 git diff。

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

非常感谢你

最佳答案

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

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

关于git clone --bare 来自 ssh : objects folder empty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37176097/

相关文章:

Gitkraken 在尝试执行任何操作时显示 `error matching pattern`

SSH 添加 : Invalid key length

mysql - 将 mysql 表转储到 CSV(stdout),然后将输出隧道传输到另一台服务器

ruby-on-rails-3 - Sshfs、Textmate 和 Rails 项目,非常慢

git - Bamboo - 构建我的 pull 请求

git - 尝试部署到 github 分支上的 firebase

linux - 在远程服务器上复制文件和目录,同时排除其中的一些

linux - VSCode 远程 Python 虚拟环境

git - 在管道中运行作业时找到当前的 git 分支

linux - 在输出之前打印刚刚启动的进程的 pid