[GIT]删除一些历史记录以减少.GIT文件夹大小,如何?

[GIT]删除一些历史记录以减少.GIT文件夹大小,如何?,git,Git,我遇到了一个非常棘手的问题 我的服务器上有一个非常庞大的回购协议。巨大的意思是:大量的提交和分支导致一个大的.git文件夹。 现在我想在某个日期之前删除一些历史记录提交,以减小.git文件夹的大小 上周,我学到了很多关于git的知识。我发现我越靠,我就越困惑 我的问题是: 它真的很小吗?通过删除一些历史记录,git的大小会很大吗?因为旧的恢复文件现在可能仍在使用 如果1为真,我该怎么做?我学习使用.git/info/grafts+git过滤器分支。。但每次结果都是一团糟。提交行被分割成几行,因为

我遇到了一个非常棘手的问题

我的服务器上有一个非常庞大的回购协议。巨大的意思是:大量的提交和分支导致一个大的.git文件夹。

现在我想在某个日期之前删除一些历史记录提交,以减小.git文件夹的大小

上周,我学到了很多关于git的知识。我发现我越靠,我就越困惑

我的问题是:

  • 它真的很小吗?通过删除一些历史记录,git的大小会很大吗?因为旧的恢复文件现在可能仍在使用

  • 如果1为真,我该怎么做?我学习使用.git/info/grafts+git过滤器分支。。但每次结果都是一团糟。提交行被分割成几行,因为在我切断之前有很多分支

  • 即使我解了分裂的线,也得到了我所期望的一条线。但我的git回购协议是一个公开的协议,很多人已经克隆了它并开始工作。本地repo是否可以在不重新克隆远程处理的repo的情况下解决冲突

  • 我希望我能把问题说清楚


    任何建议都将不胜感激

    git filter branch--tree filter'rm-f'HEAD命令应该可以帮助您完成所需的操作。

    您也可以尝试重置以限制提交的数量。或git revert,如果您希望更安全地执行此操作:

    git重置

    看一看,;除非另有说明,所有内容均根据知识共享署名2.5澳大利亚许可证进行许可。

    我可以回答#1

    我强烈建议您减少远程服务器上Git repo的大小,而不删除以前的提交。这是因为,如果有人向您的Git回购推送提交时出错,您可能需要恢复到以前的提交

    要减小远程服务器上Git回购的大小:

  • 导航到shell中的Git repo(命令行工具)
  • 在shell中键入以下命令,每行后按键盘上的Enter键这些命令将删除对已删除Git分支的任何引用,并减少Git回购的大小。
  • git reflog expire--all--expire=now


    git-gc--prune=now--aggressive

    我不会使用git跟踪数据——我想你会这么做的。如果您只使用git跟踪代码(“文本文件”),那么大小应该相当小(MB)。@Christoph我使用git跟踪Android代码。将会有一些比代码大得多的图像和库。。。git仅用于代码(以及数据,在这些数据中可以(!)跟踪更改,在这些数据中确实需要(!)跟踪更改)。我只想删除一些历史提交,并保持最近的提交不变。git reset不是我想要的。是的,使用这些命令可以稍微减小大小。但不要太多。那不是我想要的