减少git存储库中的文件混乱

减少git存储库中的文件混乱,git,garbage,Git,Garbage,我在一个小项目中使用了git自动提交模式,到目前为止总共提交了700次。作为一个不受欢迎的副作用,我现在有了一个git存储库,它的大小只有1034KB,但包含200多个文件——是实际源代码文件的50倍 有没有办法减少这种杂乱的东西 我已经试过了 git重新打包 git-gc——攻击性 文件与较旧的提交相关,并且它们存在于回购历史记录中。因此,您可以做的是创建一个新的存储库,将所有文件复制到一个新的存储库,并进行初始提交。但是你的历史就消失了。如果您真的想要一个更小的存储库,这是最简单的方法 但

我在一个小项目中使用了
git自动提交模式
,到目前为止总共提交了700次。作为一个不受欢迎的副作用,我现在有了一个git存储库,它的大小只有1034KB,但包含200多个文件——是实际源代码文件的50倍

有没有办法减少这种杂乱的东西

我已经试过了

  • git重新打包
  • git-gc——攻击性

文件与较旧的提交相关,并且它们存在于回购历史记录中。因此,您可以做的是创建一个新的存储库,将所有文件复制到一个新的存储库,并进行初始提交。但是你的历史就消失了。如果您真的想要一个更小的存储库,这是最简单的方法


但在你的情况下,我看不出200个文件有什么问题。。。以及1MB的磁盘空间。这没什么。

文件与较旧的提交相关,并且它们存在于repo历史记录中。因此,您可以做的是创建一个新的存储库,将所有文件复制到一个新的存储库,并进行初始提交。但是你的历史就消失了。如果您真的想要一个更小的存储库,这是最简单的方法


但在你的情况下,我看不出200个文件有什么问题。。。以及1MB的磁盘空间。这没什么。

所以首先让我们讨论一下比例。你说200个文件是“实际源代码的50倍”-所以你已经根据工作树中有4个文件的项目设定了期望值,对吗

按照这个标准,git总是会有“很多文件”

现在,git维护的文件放在项目的
.git
文件夹中,所以我并不认为它构成了混乱。(如果您在
.git
文件夹外看到一堆文件,则需要一些有关您看到的内容和位置的附加信息。)

我只是
init
ed了一个新的repo,它从14个文件开始,然后才有任何内容。用一个文件添加一个提交将添加另外9个文件(refs、reflogs、索引、历史数据库中的3个实际对象以及一些内务管理材料)。在构建历史时,增长最快的可能是数据库(
.git/objects

现在,您提到的已尝试的命令。。。这些都暗指git可以以“打包”格式存储数据库,从而减少文件数量。远程访问(推/取)总是这样,随着时间的推移,历史通常会“老化”为压缩表示。但对于频繁访问的内容的本地访问,您最好使用松散表示(这就是为什么git不配合您打包所有内容的尝试)

与其挂断
.git
目录中文件的数量(您通常不应该与之交互),我更担心提交历史的整洁性

git自动提交可以确保您永远不会错过捕获更改的机会,但它会创建一个低值的历史记录。如果您要使用它,那么您需要定期将生成的提交压缩为语义上有意义的提交(如果没有自动提交模式,您可能会这样做)


随着时间的推移,这可能会减少文件数量;但正如我所说,我真的认为这与问题无关。

所以首先让我们讨论一下规模。你说200个文件是“实际源代码的50倍”-所以你已经根据工作树中有4个文件的项目设定了期望值,对吗

按照这个标准,git总是会有“很多文件”

现在,git维护的文件放在项目的
.git
文件夹中,所以我并不认为它构成了混乱。(如果您在
.git
文件夹外看到一堆文件,则需要一些有关您看到的内容和位置的附加信息。)

我只是
init
ed了一个新的repo,它从14个文件开始,然后才有任何内容。用一个文件添加一个提交将添加另外9个文件(refs、reflogs、索引、历史数据库中的3个实际对象以及一些内务管理材料)。在构建历史时,增长最快的可能是数据库(
.git/objects

现在,您提到的已尝试的命令。。。这些都暗指git可以以“打包”格式存储数据库,从而减少文件数量。远程访问(推/取)总是这样,随着时间的推移,历史通常会“老化”为压缩表示。但对于频繁访问的内容的本地访问,您最好使用松散表示(这就是为什么git不配合您打包所有内容的尝试)

与其挂断
.git
目录中文件的数量(您通常不应该与之交互),我更担心提交历史的整洁性

git自动提交可以确保您永远不会错过捕获更改的机会,但它会创建一个低值的历史记录。如果您要使用它,那么您需要定期将生成的提交压缩为语义上有意义的提交(如果没有自动提交模式,您可能会这样做)


随着时间的推移,这可能会减少文件数量;但正如我所说,我真的认为这与问题无关。

如果这些文件是以前提交的文件的一部分,并且仍然存在于您的存储库中,那么这些文件实际上不是副作用;它们是历史的一部分,因为你根本不应该处理这些文件,只能通过git客户端处理,所以我认为没有必要对此做任何事情。这200个文件是存储库的历史记录,这些文件的旧版本。您可以养成自己创建有意义的提交的习惯,而不是每N分钟自动提交一次,从而避免创建不必要的文件(和提交)。(如有需要)