2014-10-02 43 views
2

我有一个与Git内部相关的问题。为什么git push --force传输blob已经包含在远程中

我有一个远程git仓库,其中每个推动大师触发一个构建。 为了尽量减少我的本地回购到一个远程数据传输,我尝试使用以下策略:

  1. 远程回购从未克隆(所以没有文件从远程下载到本地)
  2. 取而代之的是,一个新的本地存储库inited并充满了所有我想
  3. 每次我想要触发构建传输的本地文件,一个git push --force进行

强制推作品,但似乎是全部本地文件被传输到远程仓库,也有大尺寸的不可变文件已经包含在远程仓库中的。在由散列索引的对象文件夹中)。

这是Git的预期行为吗?为什么已经在远程Blob存储区中的文件被传输?我希望Git 智能协议避免重新转发已经在远程blob存储中的东西...

+0

你的步骤1和2令人难以置信的混淆。你如何确定blob正在被转移?你是否保留包文件并在其中找到它? – 2014-10-02 19:45:25

回答

3

Git通过查看图中提交的可达性,避免发送服务器已有的对象。 Git并没有走完整个历史,看着每一棵树和每个斑点,并问遥控器是否有它。这将是一次非常昂贵的谈判。

如果您每次都推送一个新的无父提交,那么您将绕过任何可以优化传输的系统。

相关问题