git仓库清理

这篇具有很好参考价值的文章主要介绍了git仓库清理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于git仓库的清理,主要就是清理git仓库里面的大的二进制文件。网上查了很多教程,很多都是用:git filter-branch.清理仓库中的大文件。

我尝试着本地测试了一下,发现是真慢呀。

方法一、git filter-branch

step1:查看又哪些大文件(查看前5个大文件)

git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"

step2: 从仓库中删除文件或文件夹

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch path-to-your-remove-file' --prune-empty --tag-name-filter cat -- --all

git filter-branch --index-filter 让每个提交的文件都复制到索引(.git/index)中

然后运行过滤器命令:git rm --cached --ignore-unmatch 文件名 ,让每个提交都删除掉“文件名”文件

然后--prune-empty 把空的提交“修剪”掉 

然后--tag-name-filter cat 把每个tag保持原名字,指向修改后的对应提交

最后-- --all 将所有ref(包括branch、tag)都执行上面的重写

step 3:删除缓存下来的ref和git操作(这一步可以跳过,也可以不执行)

git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin

step4:运行git gc清理

git reflog expire --expire=now --all && git gc --prune=now --aggressive

step5:强制推送到远端

git push --force origin master

反正用这个方法没成功,感觉问题出在最后的推送上,因为我本地是瘦身成功的。网上搜到一些说是要把分支删得只剩master再操作。

方法二:BFG Repo-Cleaner

这个工具很快,而且会给出清理文件和受保护分支。清理后的report很清晰,推荐使用这个。git很多周边工具还是挺好用的。

环境要求:安装了java的机器。

工具下载:https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar

 工具拷贝到机器的某个位置,可重命名为bfg.jar。

我是直接对gerrit的裸库进行操作的。

step1: 在gerrit服务home目录的git目录下找到对应要瘦身仓库的.git目录。

step2: 运行如下命令:(清理大于500M的提交)

java -jar bfg.jar --strip-blobs-bigger-than 500M /usr/local/gerrit/git/common/test.git

step3: 运行如下命令进行git gc

git reflog expire --expire=now --all && git gc --prune=now --aggressive

这样就完成裸库清理,启动gerrit服务即可。

我看guide里面最后一步都是强制推送:git push origin master --force  

我感觉推完我还是没有瘦身成功,所以直接在裸库上操作了。

写在最后:这个重写git仓库太伤了,我不会再操作了,退出此江湖。。

附上git对这一块的指导文档,写得还是很清晰的:Git - 维护与数据恢复文章来源地址https://www.toymoban.com/news/detail-625882.html

到了这里,关于git仓库清理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • .git内存清理方式

    tips:操作需谨慎,此操作比较危险 查看前15个大文件 删除文件夹(public/housimg文件夹目录) 回收内存 提交变动

    2024年02月12日
    浏览(25)
  • 【经验分享】git项目.git/objects/pack很大,clone很久,object文件清理

    目录 问题现象: 解决办法: 目前实践方法2,步骤如下: 1.识别出最大的三个文件 2.查询大文件的文件名称: 3.将文件从tree中移除 4.清理和回收空间 5.提交修改远程仓库 gitlab项目12G,但实际项目就几百兆,后本地排查,发现pack文件过大,特此记录一下,object文件清理问题。

    2024年02月03日
    浏览(44)
  • vscode拉取git代码到本地提示 在签出前,请清理存储库工作树

    最近使用vscode拉取git代码到本地提示“在签出前,请清理存储库工作树”,具体如图: 原因很简单,就是因为本地代码和git远程库代码存在冲突,也就是你改的文件,别人也做了修改,并且别人先于你提交了,当你再去拉取时就会发现如上提示,导致拉取失败。 操作原理 :就

    2024年02月13日
    浏览(42)
  • 【git】从一个git仓库迁移到另外一个git仓库

    在远端服务器创建一个新的仓库 用界面创建,当然也可以用命令创建 拉去源仓库 拉去成功以后会出现 进入到文件夹内部 出现下面信息: 推送到新的远端仓库 查看新的仓库 备份完成,完美!

    2024年02月08日
    浏览(46)
  • git仓库迁移代码到新的git仓库

    此操作可以保留git仓库的历史提交记录,开始多仓库版本管理 1.查看当前仓库远程地址的名字。默认就有一个origin,代表远程仓库的名字    git remote  2.查看远程地方url   git remote -v 3.新增远程地址名称    git remote add origin2(随便去,不重复即可) master 4.设置新的远程地址  

    2023年04月16日
    浏览(40)
  • IDEA删除本地git仓库、创建本地git仓库、关联其他仓库并上传

      要在 IntelliJ IDEA 中删除本地 Git 仓库并创建新的本地 Git 仓库,以及关联其他仓库并上传,请按照以下步骤进行操作:   1、 IDEA 中“设置”——“版本控制”——“版本映射”里面删除仓库地址数据;   2、在文件系统中,删除项目目录下面的.git文件夹:   3、删

    2024年02月12日
    浏览(49)
  • 从一个git仓库迁移代码到另一个git仓库

    如果A是已有仓库,B是新建立的空仓库。(如下操作,提交记录也会带到新仓库里) 1、在本地拉一下( git clone )A仓库的代码,或者是 git pull 下最新的代码。 2、 git remote # 查看本地连接的有哪些 远程仓库,默认是 origin 3、 git remote add origin2(这个名字随便起) master # 这里是在

    2024年02月15日
    浏览(55)
  • git 怎么导入本地仓库-将本地文件夹添加到Git仓库

    1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 2、把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件 3、用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明 4、关

    2023年04月11日
    浏览(54)
  • 如何把一个 Git 仓库的分支加入另一个无关的 Git 仓库

      笔者需要将两个无关的 Git 仓库合并,也就是把一个 Git 仓库的分支加入另一个无关的 Git 仓库。笔者琢磨了一下之后就实现了。方法如下。 笔者的运行环境: git version 2.37.0.windows.1 TortoiseGit 2.11.0.0 IntelliJ IDEA 2023.1.1 (Ultimate Edition) Windows 10 教育版 为了便于说明,作如下约定

    2024年02月12日
    浏览(57)
  • 如何将本地代码推送到git仓库/更换项目git仓库(简单粗暴)

    开发两年半了,这天有一个新项目需要我初始化项目,平常的工作自己只是拉取代码开发再推送,并没有自己创建过仓库,于是乎我研究了一个简单粗暴的方法,完美推送初始化项目! 1.首先在git网站先创建自己的远程仓库 2.直接复制远程仓库地址 3.使用编译工具直接拉取,

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包