如何释放 .git 文件夹中的空间?

问题描述 投票:0回答:2

所以我正在 Unity 中做一个项目,我很好奇为什么我的项目大小如此之大(200 GB),然后我意识到有一个隐藏的 .git 文件夹,其大小为 80 GB。

有人告诉我压缩我的数据库。这会释放空间,所以我进入 Git GUI 并按下压缩按钮,它耗尽了磁盘中的所有可用空间。命令甚至还没有完成。

我现在可以用 300 MB 的可用空间来清除 .git 文件夹吗?

git unity-game-engine version-control gitlab
2个回答
1
投票

Git 历史记录可能会占用大量空间,即使大文件不在最新分支上也是如此。

您可以删除存储库的所有 Git 历史记录并将当前状态变为初始状态:

可见:https://stackoverflow.com/a/26000395

  1. 结账
  • git checkout --orphan latest_branch
  1. 添加所有文件
  • git add -A
  1. 提交更改
  • git commit -am "commit message"
  1. 删除分支
  • git branch -D main
  1. 将当前分支重命名为main
  • git branch -m main
  1. 最后,强制更新您的存储库
  • git push -f origin main

这将释放您的

.git
文件夹中的大量空间。

另请参阅:使当前提交成为 Git 存储库中唯一(初始)提交?

(这本质上与我在https://stackoverflow.com/a/70742570/7058266中发布的解决方案相同)


1
投票

然后我意识到有一个隐藏的.git文件夹,大小为80Gb

如果你的

.git
文件夹那么大,并且你正在做Unity开发,我真的希望你使用git-lfs

否则你犯了一个大错误,你将不得不修复它(如果你不再有可用空间,事情会变得更加复杂,所以我不会在这里回答)

如果您使用 git-lfs,您可以使用以下命令清理不再使用的对象:

git lfs prune

只有在那之后并且如果它产生了一些空闲空间,那么你就可以做一个

git gc

所以我进入 Git GUI 并按下压缩,它耗尽了我磁盘中的所有可用空间,该命令甚至没有完成。

如果它的行为像这样并且无法压缩 git 对象,这可能意味着您没有启用 git-lfs,因此 git 很难压缩您的大型二进制文件资产,因此您必须启用它并转换您的整个 git 历史记录使用它。但在确保您使用的 git 托管支持它之前...

对于您的迁移,类似的事情可能会有所帮助:

而且我不确定当你的磁盘已满时是否可以完成。 因此,也许您必须腾出可用空间或将存储库复制到其他地方,然后从那里开始工作(在开始执行这些操作之前,先创建一个副本作为备份仍然是一个好主意)。

如果需要,购买外部硬盘...

Unity 与 Git:https://thoughtbot.com/blog/how-to-git-with-unity

© www.soinside.com 2019 - 2024. All rights reserved.