保持.git尽可能小

时间:2015-05-11 07:54:29

标签: git

我们的一些实时网站会收到自动代码更新。我希望这些都是自动提交的(不要担心这种情况,一切都经过单元测试,只有小型网站会自动更新)。

当我将回购邮件放在实时网络服务器上时,尺寸变得非常大。

在本地历史记录中仅保留1个分支的最小历史记录的最佳方法是什么?

谢谢。

3 个答案:

答案 0 :(得分:5)

您可以尝试确保服务器上的裸仓库创建了一个克隆:

那将是:

git clone -b mybranch --depth 1 /url/of/my/repo

--depth implies --single-branch

这应该会导致服务器上相当紧凑的git repo。

Git 2.5(2015年第二季度)甚至支持单次提取提交!请参阅“Pull a specific commit from a remote git repository”。

答案 1 :(得分:2)

保持.git尽可能小的最佳方法的好建议是:

  1. 确定真正让你的git repo变大的原因。提交过多了吗?是二进制文件的原因吗?你一直在重写一个巨大的文件吗?

  2. 不提交二进制文件或任何更大的文本(base64编码的图像几乎与提交标准图像相同)

  3. 改进您的.gitignore并仅提交必要的内容。

  4. 在服务器上的git存储库之外运行缩小/脚本(例如,如果你使用gulp / grunt - 那么不提交他们的构建过程的结果,只提交过程的来源)

  5. 如果你有很多小修补程序或提交,你可以使用rebase并偶尔重新分支你的分支并删除所有具有特定标记的提交(你可以tag小提交和在他们之后使用rebase仅保留结果)

  6. 使用多个git存储库和submodules。您可以偶尔克隆/删除其中一个处理您自动提交的文件

  7. 使用git archive创建来自命名树的文件存档

答案 2 :(得分:0)

另一个工作流程是:在集成服务器上使用git archive来构建要部署的提交的存档(tar.gztar.bz2),并将此存档发送到您的实时服务器(scpsftprsync ...)。

您的生产服务器不再需要git访问,也不再需要.git目录。