专栏首页华创信息技术Git清理commit中历史提交的大文件

Git清理commit中历史提交的大文件

文章时间:2019年11月10日 14:02:59 解决问题:清理Git中比较大的文件,主要针对历史记录进行清理 ps:因为Git可以恢复版本,所有历史提交过的较大的文件,也会被保存下来,所以我们需要……xx嗯,你懂的。

这里方法有两种,下面方法主要介绍了其中一种

查看目录下的文件的大小

git count-objects -v # 查看 git 相关文件占用的空间
du -sh .git # 查看 .git 文件夹占用磁盘空间
du -d 1 -h  # 列出所有文件的大小

du是linux 的基础命令,很多用法,详情自己去查找其他文档。 因为git的历史文件都是存在一个文件里的,我们使用下面命令可以找出排名前五的文件

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

方法一 纯手动(小米+步枪)的方法

直接参考这篇教程即可,写的比较全面,比百度上很多废教程好多了。 记一次删除Git记录中的大文件的过程:https://www.hollischuang.com/archives/1708

方法二 工具化(自动机枪)

工具名称:BFG 工具地址:https://rtyley.github.io/bfg-repo-cleaner/

第一步 下载包文件

直接官网下载即可,bfg-1.13.0.jar 将程序包放到一个文件夹里,为了方便,重命名为bfg.jar

第二步 克隆仓库

clone自己的git repo,使用--mirror参数

git clone --mirror http://192.168.1.199:8099/hcses/hcses-warehouse.git

第三步 清除大文件,文件夹,隐私文件

这里官网给出的命令,可能会不行,我们继续添加参数。 删除文件和删除文件夹的命令

java -jar bfg.jar --delete-files 我是单个文件名字 hcses-warehouse.git --no-blob-protection
java -jar bfg.jar --delete-folders 我是文件夹的名字 hcses-warehouse.git --no-blob-protection

第四步 清理不需要的数据

在完成上面的指令后,实际上这些数据/文件并没有被直接删除,这时候需要使用git gc指令来清除。

cd hcses-warehouse.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive

第五步 推送到GitHub

git push

这里普通推送可能也会报错,我们可以使用强制推送。

git push --force
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://wiki.nooss.cn复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • Git 系列教程(6)- 查看 commit 提交历史

    -p 除了显示基本信息之外,还附带了每次提交的变化,好处:当进行代码审 review 时,可以快速看到别人提交代码的差异

    小菠萝测试笔记
  • Git禁止大文件提交到仓库中

    Git提交的时候,有的时候很容易将目录下的非源代码的文件(如二进制文件、模型等)提交到Git仓库里,给后续的使用造成麻烦。那么有没有一种方法来限制提交到Git的...

    王云峰
  • git commit 删除中间提交的错误commit id

    经常会遇到提交多个commit ,最后发现版本有问题,需要删除中间的一个commit, git 中并没有提供现成的命令,需要多个命令组合完成该功能.

    程序手艺人
  • Git 修改已提交 commit 的信息

    由于 Github 和公司 Git 使用账号不一样,偶尔没注意,提交出错后就需要修改 commit 信息。

    叨叨软件测试
  • 【Git】修改已经提交的commit内容

    通过 Git 进行版本管理时,对于已经提交但没有 push 的 message 信息,发现提交信息填写错误后,如何进行修改? 对于已经 push 的 mess...

    程序小工
  • 如何删除错误提交的 git 大文件

    早上小伙伴告诉我,他无法拉下代码,我没有在意。在我开始写代码的时候,发现我的 C 盘炸了。因为我的磁盘是苏菲只有 256G 放了代码就没空间了,于是我查找到了原...

    林德熙
  • 回滚 Git 提交到 GitHub 的 commit 记录

    在执行上述命令的时候,可能会提示本地的版本落后于远端的版本,因此我们还需要在上述命令中加上--force参数:

    CG国斌
  • Git彻底删除历史提交记录的方法

    試毅-思伟
  • Git修改已提交的commit1 本地修改

    由于以下修改本身是对版本历史的修改,在需要push到远程仓库时,往往是不成功的,只能强行push,这样会出现的一个问题就是,如果你是push到多人协作的远程仓库...

    JavaEdge
  • git commit 新修改的内容 添加到上次提交中 减少提交的日志

    有时候提交过一次记录只有,又修改了一次,仅仅是改动一些较少的内容,可以使用git commit --amend. 添加到上次提交过程中;

    xuyaowen
  • BFG Repo-Cleaner - 快速清除Git提交历史中的特定文件

    有些时候不小心上传了一些敏感文件(例如密码), 或者不想上传的文件(没及时或忘了加到.gitignore里的),而且上传的文件又特别大的时候, 这将导致别人cl...

    白石
  • 删除Git仓库中的大文件

    Git是用来管理源代码的一个工具,很多时候,我们不想让Git来跟踪较大的二进制文件。但是如果不小心将某个文件加入到Git的缓存区后,不管后面怎么删除这个大文件,...

    王云峰
  • Github又悄悄升级了,这次的变化是大文件的存储方式

    github是大家常用的代码管理工具,也被戏称为世界上最大的程序员交友网站,它的每次升级都会影响很多用户。在我的个人github网站上,之前在做JAVA NIO...

    程序那些事
  • Git+Gerrit如何永久删除历史文件(大文件/私密文件)

    前几天同事在拉取一个项目的Git仓库时,发现项目拉取速度非常慢,半个钟都无法拉取下来,并且发现一直卡在了99%的进度上。

    开发的猫
  • 寻找并删除Git记录中的大文件

    happy123.me
  • 10.7 Git 内部原理 - 维护与数据恢复

    有的时候,你需要对仓库进行清理 - 使它的结构变得更紧凑,或是对导入的仓库进行清理,或是恢复丢失的内容。 这个小节将会介绍这些情况中的一部分。

    shaonbean
  • git删除全部提交历史,成为一个新的仓库

    有时候在提交代码时,不小心提交了敏感数据,如账号密码什么的,这样在历史记录中就可以查看到,这样很不安全,所以就需要吧历史提交记录删了,变成一个新的仓库。

    零式的天空
  • Git目录为什么这么大

    本文围绕git的目录过大,从git进行版本控制底层存储出发,简要分析Git目录过大的原因,以及如何处理

    仙人技术
  • 【技术建设】规范git commit的提交记录(交互式命令行)

    随着项目体积的增加,参与到项目中的同学越来越多,每个人都有自己的打 git log 的习惯:

    心谭博客

扫码关注腾讯云开发者

领取腾讯云代金券