如何让我的git repo更小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让我的git repo更小相关的知识,希望对你有一定的参考价值。

我有一个git repo,我每天都会多次自动提交,但现在git存储库变得越来越大,需要一段时间才能克隆到其他设备上。我想知道减少我的存储库最简单的方法是什么。有没有办法删除旧的提交以减少我的存储库大小?

答案

git提供了git gc命令和git repack来改进维护旧的和胖的存储库。还有一些未编写的规则可以帮助防止当前存储库快速增长(即使用lfs来存储大文件等)。

使用this获取更多细节。

另一答案

要删除master分支上超过一周的提交,您可以使用以下步骤:

  1. 获取命令需要保留的最后一周的提交 git log --oneline --since="one week ago" master 然后你将在最后一周获得如下提交(最新提交在最顶层,最旧提交在底部): d1fc497 (HEAD -> master, origin/master, origin/HEAD) message5 ac89b87 message4 8c3e839 message3 d4ffc42 message2 3f1d63a message1 第一个/更早的提交3f1d63a需要在以下步骤中使用。
  2. 从您要保留的第一个提交中签出一个孤立分支(如上例中的提交3f1d63a): git checkout --orphan temp 3f1d63a git commit -m 'init commit'
  3. 基于temp分支重新推出最后一周的提交,并强制推动master分支: git rebase --onto temp 3f1d63a master git push -f origin master

现在master分支将只包含过去一周的提交。


要删除本地git仓库中的无用对象,可以使用以下命令:

rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
git prune --expire now

现在你的本地回购邮件的大小应该更小。

以上是关于如何让我的git repo更小的主要内容,如果未能解决你的问题,请参考以下文章

如何将git repo同步到镜像仓库

在Android Repo项目中切换Git分支

Git:如何将丢失的分支从一个仓库推送到另一个仓库

如何将 git bare repo HEAD 与其工作树位置进行比较

如何在 git repo 中链接依赖项?

如何使用 git repos 作为我的 PyPi 包的依赖项?