git是否从本地推送到远程压缩数据?

时间:2014-02-11 07:51:58

标签: git version-control github

我的本​​地存储库有大约500个文件,总大小约为125MB。我在“http://repositoryhosting.com/”提供的存储上初始化了一个git存储库。

我通过Git GUI

执行了以下步骤
  • git commit(我当地的回购)
  • git remote add
  • git push

它说它上传到远程回购,我可以看到文件,但回购现在的大小只有 26 MB

我尝试在远程仓库的另一台机器上的两个不同场合git clone和git pull。他们似乎完全下载了Remote repo上的 26MB 。但是,当我检查机器上文件夹的大小时,它会显示 125MB

问题:

  1. 上传到远程回购时“git push”压缩数据吗?
  2. 我丢失了数据吗?
  3. 如果我想在多台本地计算机上制作Remote Repo的副本,以便多人可以在同一个项目上工作,我可以使用Git Clone或Git Pull吗?

3 个答案:

答案 0 :(得分:6)

  

'git push'在上传到Remote Repo时压缩数据吗?

是。它推动了diff delta pack files

  

我丢失了数据吗?

没有。
一旦你开始处理回购,你:

  • 签出工作树中的打包文件
  • 使用存储在.git / objects中的已添加文件,这些文件尚未重新打包。
    有关详情,请参阅“Git Internals - Packfiles”。
  

如果我想在多台本地计算机上制作Remote Repo的副本,以便多人可以在同一个项目上工作,我可以使用Git Clone或Git Pull吗?

git clone用于该回购的初始复制和结帐 然后是git pull

答案 1 :(得分:1)

除了已经说过的内容之外,Git的内容可寻址存储模型自然地对数据进行重复数据删除,即具有相同内容的文件仅存储一次。我非常怀疑这会在您的情况下发挥作用,但一般而言,根据您存储的数据类型,这是Git存储相当高效的另一个原因。

答案 2 :(得分:0)

由于git使用delta编码推送数据,因此您不会丢失数据。 顺便说一句,您可以通过执行以下操作来清理不必要的文件并优化本地存储库:

git gc 

来自gc的手册页:

  

在当前存储库中运行许多内务处理任务,   例如压缩文件修订版(以减少磁盘空间          并提高性能)并删除可能从之前调用git add创建的无法访问的对象。