清除GitLab存储库中的大文件 [英] Clear 'hiiden' large files in gitlab repo

查看:16
本文介绍了清除GitLab存储库中的大文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道我备份到gitlab文件是python脚本文件和jupyter笔记本。然而,我的GitLab回购显示我当前使用的是9.8 GB(令人震惊!)。

我真的不打算将大文件提交到repo(例如数据文件)。肉眼检查没有给我看那些大文件,所以我可以把它们移走。我看到的都是python脚本文件。

如何清除repo中的那些大文件?

推荐答案

大文件提交历史记录在GitLab中仍然可用,即使您删除了那些"大文件"。您可以使用this答案中的以下脚本查看这些文件列表。

git rev-list --objects --all |
  git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' |
  sed -n 's/^blob //p' |
  sort --numeric-sort --key=2 |
  cut -c 1-12,41- |
  $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest

首先创建一个脚本文件,并将该文件的权限授予可执行文件,如下所示:

vim history.sh   # and paste the above script into the file
chmod +x history.ch # give file exe permission

./history.sh  # to run file

这将报告所有提交历史记录和文件大小,如下所示:

....
192e100aaf93  2.8MiB SMF/Checking/models/Model_0.h5
1b808a1a25ba  2.8MiB SMF/Checking/models/Model_2.h5
80168dc7ffb54 1.3GiB SMF/data/segments_instances_final.csv
775b60418498  1.5GiB Revised_KerasData_NoSmoothing.pickle
2341792d8c9b  4.2GiB geolife.sql
......

删除大文件

使用BFG-repo-cleaner清除这些文件:

注意:假设您已经安装了Java,请下载上述repo中的bfg.jar文件并将其复制到当前目录。

  1. 克隆您的Git存储库(并对其进行备份):
$ git clone --mirror git://example.com/my-large-repo.git 
  1. 运行bfg清理存储库(例如清除大于50MB的文件):
$ java -jar bfg.jar --strip-blobs-bigger-than 100M my-large-repo.git

....
                            Before     After   
    -------------------------------------------
    First modified commit | fc7cf2f9 | a772ae4a
    Last dirty commit     | d4a1a3d4 | 9b345832

Deleted files
-------------

    Filename                                                    Git id                                                       
    -------------------------------------------------------------------------------------------------------------------------
    3Class_Instances.pkl                                      | ceebb395 (558.1 MB)                                          
    Beijing_KerasData.pkl                                     | 8681a270 (133.4 MB)                                          
    Filtered_Trajectory.pkl                                   | bfe06d09 (137.8 MB)    
      ....
  1. 剔除不需要的脏数据
$ cd my-large-repo.git
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive

Enumerating objects: 1306, done.
Counting objects: 100% (1306/1306), done.
Delta compression using up to 8 threads
Compressing objects:  78% (973/1238)238)
...
  1. 最终推回您的干净回购:
$ git push

来源:here

这篇关于清除GitLab存储库中的大文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆