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

时间:2016-08-05 12:27:07

标签: git

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

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

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

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

我的问题是:

  1. 可以通过删除一些历史记录提交的确实很小的.git大小吗?因为现在仍然可以使用较旧的版本。

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

  3. 即使我解决了分裂线,也能按照我的预期获得一条线。但是我的git repo是一个发布版本,许多人已经克隆它并继续工作。本地存储可以解决冲突而无需重新克隆远程处理的存储库吗?

  4. 我希望我明白我的问题。

    任何建议都将受到赞赏!!!

3 个答案:

答案 0 :(得分:1)

我可以回答#1。

我强烈建议您在不删除以前的提交的情况下减少远程服务器上Git仓库的大小。这是因为如果有人向你的Git仓库提交提交错误,你可能需要恢复到之前的提交。

要减少远程服务器上Git仓库的大小:

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

    git gc --prune = now --aggressive

答案 1 :(得分:0)

命令 git filter-branch --tree-filter'rm -f'HEAD 可以帮助你处理所需的事。

答案 2 :(得分:0)

您也可以尝试重置以限制您拥有的提交数量。如果您想更安全地执行此操作,请使用git:

git reset

看看https://www.atlassian.com/git/tutorials/undoing-changes/git-reset;除非另有说明,否则所有内容均根据知识共享署名2.5澳大利亚许可证进行许可。