如何让我的git repo更小

时间:2017-12-02 16:10:38

标签: git version-control scalability

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

2 个答案:

答案 0 :(得分:1)

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

使用this了解更多详情。

答案 1 :(得分:1)

要删除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
    
  4. 现在master分支只包含过去一周的提交。

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

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

    现在您当地的回购协会规模应该更小。