.git文件过大!删除大文件

摘要:
当我们每天使用Git时,我们可能不会注意到。用于小型项目的git文件。事实上git文件主要用于记录每次提交的更改。当我们的项目越来越大时,我们会发现这一点。git文件越来越大。然而,这个问题是由不断增长的规模造成的。git文件意味着每次拉项目都需要花费大量时间,每个人都要花费大量时间。git提供了一个解决方案。您可以使用gitbranch过滤器遍历githistory树,它可以永久删除历史中的大型文件,这样。git文件可以精简。看看你的。git文件。你惊讶吗!

在我们日常使用Git的时候,一般比较小的项目,我们可能不会注意到.git 这个文件。

其实, .git文件主要用来记录每次提交的变动,当我们的项目越来越大的时候,我们发现 .git文件越来越大。

很大的可能是因为提交了大文件,如果你提交了大文件,那么即使你在之后的版本中将其删除,但是,

实际上,记录中的大文件仍然存在。

为什么呢?仔细想一想,虽然你在后面的版本中删除了大文件,但是Git是有版本倒退功能的吧,那么如果大文件不记录下来,

git拿什么来给你回退呢?但是,.git文件越来越大导致的问题是: 每次拉项目都要耗费大量的时间,并且每个人都要花费

那么多的时间。。

git给出了解决方案,使用git branch-filter来遍历git history tree, 可以永久删除history中的大文件,达到让.git文件瘦身的目的。

下面给出步骤(以下步骤非常危险,操作需谨慎!别把公司删没了哈哈)

首先找出git中前五大的文件: 

git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5

执行的结果实际上是这个样子的:

.git文件过大!删除大文件第1张

第一行的字母其实相当于文件的id,用以下命令可以找出id 对应的文件名:

git rev-list --objects --all | grep 8f10eff91bb6aa2de1f5d096ee2e1687b0eab007

好了,最大的文件找到了。怎么删除呢?

复制代码
git filter-branch --index-filter 'git rm --cached --ignore-unmatch <your-file-name>'
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git fsck --full --unreachable
git repack -A -d
git gc --aggressive --prune=now
git push --force [remote] master
复制代码

首先,里面最重要的两条命令是 git filter-branch 和 gc, filter-branch 真正在清理,但是只运行它也是没用的,需要再删除备份的文件,重新打包之类的,最后的gc命令,

用来收集产生的垃圾,最终清除大文件。

一步到位,再看看你的.git文件,有没有大吃一惊呢!

====

转载:https://www.cnblogs.com/lout/p/6111739.html

免责声明:文章转载自《.git文件过大!删除大文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇机器学习实战之树回归NModbus使用示例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在VSCode中使用Git处理文件冲突(pull不能从服务器拉取代码)

正常情况下,获取最新代码并修改完本地代码后,正常提交流程是先暂存本地代码、提交、推送至服务器。 在多人协作开发时会出现本地文件和服务器文件冲突的情况,这时候不能成功拉取服务器代码进行合并,这时候需要采取Stash命令, 步骤:   1、Stash Changes 这个操作会把选中的文件暂时copy一份放在存储中心(独立于本地代码和git服务器代码),并将...

【Git】4、创建代码仓库,HTTP、SSH拉取远端代码

拉取远端代码:使用Git命令下载远程仓库到本地 文章目录 拉取远端代码:使用Git命令下载远程仓库到本地 1、创建远程代码仓库 2、创建仓库 3、进入仓库 4、HTTP(S)获取远程仓库 首次拉取 更新代码 临时记住密码 永久记住密码 5、 SSH拉取 拉取代码 创建一个ssh key 添加公钥到服务器 再次拉取代码 更新代码 6、小结 H...

gitlab介绍与操作

Gitlab GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。 与 Github 类似,GitLab 能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访 问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(W...

git 场景 :从一个分支cherry-pick多个commit

场景: 在branch1开发,进行多个提交,这是切换到branch2,想把之前branch1分支提交的commit都【复制】过来,怎么办? 首先切换到branch1分支,然后查看提交历史记录,也可以用sourceTree查看,也可以用命令git log 例如我的git log 如下: commit 023sb6f299849a1fec3bbe72baaf3...

Pycharm 操作Git

拉取代码 我使用的是Pycharm2020,首先我们要在Git上获取Https链接,然后在我们的Pycharm上进行拉取 然后我们可以在Pycharm上面进行换分支操作 使用Pycharm 提交代码 首先在commit里面把修改的代码提交到本地,然后就可以Push到线上了 注意: 如果你是团队合作,一定要在每次Push之前Pull一下代码,这样...

IDEA配置GIT

注:此方法可用于配置gitlab也可用于配置github 1.在github中创建一个账号:https://github.com/join?source=header-home 2.下载并安装git:https://git-scm.com/downloads 3.安装成功后打开Git Bash,输入下列命令,设置git全局用户名和邮箱 4.在IDEA中设...