我有一个git repo,我每天都会多次自动提交,但现在git存储库变得越来越大,需要一段时间才能克隆到其他设备上。我想知道减少我的存储库最简单的方法是什么。有没有办法删除旧的提交以减少我的存储库大小?
答案 0 :(得分:1)
git提供了git gc
命令和git repack
来改进维护旧的胖存储库。还有一些未编写的规则可以帮助防止当前存储库快速增长(即对大文件使用lfs
等等。)
使用this了解更多详情。
答案 1 :(得分:1)
要删除master分支上超过一周的提交,您可以使用以下步骤:
通过命令
获取您需要保留的最后一周的提交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
需要在以下步骤中使用。
从您要保留的第一个提交中签出一个孤立分支(如上例中的提交3f1d63a
):
git checkout --orphan temp 3f1d63a
git commit -m 'init commit'
根据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
现在您当地的回购协会规模应该更小。