我们的一些实时网站会收到自动代码更新。我希望这些都是自动提交的(不要担心这种情况,一切都经过单元测试,只有小型网站会自动更新)。
当我将回购邮件放在实时网络服务器上时,尺寸变得非常大。
在本地历史记录中仅保留1个分支的最小历史记录的最佳方法是什么?
谢谢。
答案 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尽可能小的最佳方法的好建议是:
确定真正让你的git repo变大的原因。提交过多了吗?是二进制文件的原因吗?你一直在重写一个巨大的文件吗?
不提交二进制文件或任何更大的文本(base64编码的图像几乎与提交标准图像相同)
改进您的.gitignore并仅提交必要的内容。
在服务器上的git存储库之外运行缩小/脚本(例如,如果你使用gulp / grunt - 那么不提交他们的构建过程的结果,只提交过程的来源)
如果你有很多小修补程序或提交,你可以使用rebase
并偶尔重新分支你的分支并删除所有具有特定标记的提交(你可以tag
小提交和在他们之后使用rebase
仅保留结果)
使用多个git存储库和submodules。您可以偶尔克隆/删除其中一个处理您自动提交的文件
使用git archive创建来自命名树的文件存档
答案 2 :(得分:0)
另一个工作流程是:在集成服务器上使用git archive
来构建要部署的提交的存档(tar.gz
或tar.bz2
),并将此存档发送到您的实时服务器(scp
,sftp
,rsync
...)。
您的生产服务器不再需要git访问,也不再需要.git
目录。