首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在某个提交后永久删除所有提交,以减少磁盘空间?

如何在某个提交后永久删除所有提交,以减少磁盘空间?
EN

Stack Overflow用户
提问于 2020-09-04 18:40:37
回答 2查看 89关注 0票数 0

出于测试目的,我需要一个精简的linux内核git repo,它包含更少的提交,占用更少的磁盘空间。例如,假设我需要永久删除v3.2之后的所有提交,我尝试了以下命令来删除805a6a之后的所有提交:

代码语言:javascript
运行
复制
git reset --hard 805a6af8dba5dfdd35ec35dc52ec0122400b2610
git gc --aggressive --purne=all

在运行这些命令之前,存储库需要2.7G的磁盘空间。运行命令后,repo占用2.0G磁盘空间,但我认为它占用的磁盘空间更少,因为似乎没有真正删除任何提交:在运行命令之前和之后,"git rev-list --all --count“的输出都是949352。

有什么想法吗?如何永久删除805a6a之后的提交,使其不占用磁盘空间?

EN

回答 2

Stack Overflow用户

发布于 2020-09-04 19:31:31

这可能有点XY problem

出于测试目的,我需要一个精简的

内核git repo,它包含更少的提交,占用更少的磁盘空间。

您可以通过执行一种倒排的shallow clone来实现这一点,它包含了直到特定标记的历史记录。您可以使用git clone--branch--single-branch选项来执行此操作。例如:

代码语言:javascript
运行
复制
git clone https://github.com/torvalds/linux.git --single-branch --branch v3.2
票数 0
EN

Stack Overflow用户

发布于 2020-09-05 00:00:49

这不是你想要的,原因是gc只会在没有引用提交的情况下删除它们。这可能意味着可以从提交到达的其他分支。这可能意味着标签。这肯定是指你的reflog。

要说服git删除已提交的数据并不容易。这是可以做到的,但是对于linux内核这样大小的repo,我不认为这是一个合理的任务。

为什么不直接克隆你需要的部分。您可以提供一个--branch选项来指定您想要的版本,一个--single-branch选项来仅复制该版本之前的历史记录,甚至还可以提供一个--depth选项(或其他浅显选项)来限制您复制的历史记录数量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63739560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档