BFG Repo-Cleaner 清理在Git历史记录中不需要的数据(git仓库臃肿、git仓库太大、清理git仓库大文件、清理.git\objects\pack中的.pack文件)

这篇具有很好参考价值的文章主要介绍了BFG Repo-Cleaner 清理在Git历史记录中不需要的数据(git仓库臃肿、git仓库太大、清理git仓库大文件、清理.git\objects\pack中的.pack文件)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

BFG Repo-Cleaner: 在Git历史记录中清理不需要的数据

在处理 Git 项目时,可能会遇到一些敏感信息或者大文件被误上传到了仓库,这样会导致仓库变得庞大并且难以管理。这种情况下,BFG Repo-Cleaner 就派上用场了。它是一个更简单、更快速的工具,可以帮助我们从 Git 历史记录中删除不需要的数据。

BFG Repo-Cleaner 是什么?

BFG Repo-Cleaner 是一个由 Scala 编写的命令行工具,用于快速、精确地从 Git 仓库中删除不需要的数据。相比于 git-filter-branch 命令,BFG 的速度更快,使用也更简单。无论是大文件还是敏感数据,只需简单的命令,就能将其从所有提交历史中移除。

安装 BFG Repo-Cleaner

首先,需要在系统上安装 BFG Repo-Cleaner。以下是在 macOS 和 Ubuntu 以及 Windows 系统上的安装方法:

在 macOS 上安装

brew install bfg

在 Ubuntu 上安装

sudo apt-get install bfg-repo-cleaner

在 Windows 上安装

页可以在Windows上安装BFG Repo-Cleaner,但是需要先安装Java Runtime Environment (JRE),因为BFG Repo-Cleaner是用Scala写的,需要运行在JRE上。这里是具体步骤:

1. 安装Java Runtime Environment

可以从Oracle的官方网站下载最新版本的JRE:https://www.oracle.com/java/technologies/javase-jre8-downloads.html
git 清空历史数据,节省服务器数据,git,git
需要注册oracle账号,有点麻烦,我的密码填的Qin********123#

这里有我的下载链接:https://download.csdn.net/download/Dontla/88617066

然后双击jdk-8u391-windows-x64.exe默认安装即可。

3. 确保计算机上已经安装了git

如果还没有安装,你可以从这里下载并安装:https://git-scm.com/download/win

4. 下载BFG Repo-Cleaner的jar文件

你可以从它的GitHub页面找到下载链接:https://github.com/rtyley/bfg-repo-cleaner

在这个地方下载jar:https://rtyley.github.io/bfg-repo-cleaner/

git 清空历史数据,节省服务器数据,git,git

这里有我的下载链接:https://download.csdn.net/download/Dontla/88617154

5. 运行BFG Repo-Cleaner

打开命令提示符(cmd)或者PowerShell,然后使用以下命令运行BFG Repo-Cleaner:

java -jar bfg.jar

git 清空历史数据,节省服务器数据,git,git

注意你需要把bfg.jar替换成你下载的jar文件的实际路径。

通过以上步骤,你就可以在Windows上运行BFG Repo-Cleaner了。

注意,如果要停止BFG Repo-Cleaner,关掉控制台窗口即可。

清理 Git 历史记录

使用 BFG Repo-Cleaner 可以轻松地从 Git 历史记录中清理不需要的数据。下面是一些常见的清理操作。

删除大文件

Git 对大文件的处理效率并不高,因此,在仓库中保存大量大文件可能会影响其性能。以下是使用 BFG Repo-Cleaner 删除大文件的步骤:

  1. 克隆一个裸仓库:

    git clone --mirror https://github.com/username/repo.git
    
  2. 使用 BFG 删除大于 100M 的文件:

    bfg --strip-blobs-bigger-than 100M repo.git
    

    注意,直接运行 bfg 这个命令在 Windows 上并不会工作,命令需要连起来使用,如:

    java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M kyai_3.0_tml.git
    
    E:\20230228_HuiYuanKuangNaoCwProject\testKYAI\coding>java -jar bfg-1.14.0.jar --strip-blobs-bigger-than 100M kyai_3.0_tml.git
    
    Using repo : E:\20230228_HuiYuanKuangNaoCwProject\testKYAI\coding\kyai_3.0_tml.git
    
    Scanning packfile for large blobs: 24977
    Scanning packfile for large blobs completed in 4,265 ms.
    Found 41 blob ids for large blobs - biggest=1680050705 smallest=118199808
    Total size (unpacked)=15999116602
    Found 14691 objects to protect
    Found 3 commit-pointing refs : HEAD, refs/heads/kyai_tml_dev, refs/heads/master
    
    Protected commits
    -----------------
    
    These are your protected commits, and so their contents will NOT be altered:
    
     * commit aa9fcf63 (protected by 'HEAD') - contains 4 dirty files :
            - kyai_one_button_deploy/shsany_ai/kyai_arm_ubuntu/kyai/ky/client/web/html/web/expressServer/public/upload/box_cjg_people_2.9.tgz (135.4 MB)
            - kyai_one_button_deploy/shsany_ai/kyai_x86_ubuntu/kyai_x86_ubuntu_20231113-163359.tgz (1.6 GB)
            - ...
    
    WARNING: The dirty content above may be removed from other commits, but as
    the *protected* commits still use it, it will STILL exist in your repository.
    
    Details of protected dirty content have been recorded here :
    
    E:\20230228_HuiYuanKuangNaoCwProject\testKYAI\coding\kyai_3.0_tml.git.bfg-report\2023-12-11\16-05-11\protected-dirt\
    
    If you *really* want this content gone, make a manual commit that removes it,
    and then run the BFG on a fresh copy of your repo.
    
    
    Cleaning
    --------
    
    Found 742 commits
    Cleaning commits:       100% (742/742)
    Cleaning commits completed in 1,919 ms.
    
    Updating 2 Refs
    ---------------
    
            Ref                       Before     After
            ---------------------------------------------
            refs/heads/kyai_tml_dev | f4659531 | 0d17b95a
            refs/heads/master       | aa9fcf63 | c44db569
    
    Updating references:    100% (2/2)
    ...Ref update completed in 12 ms.
    
    Commit Tree-Dirt History
    ------------------------
    
            Earliest                                              Latest
            |                                                          |
            ...DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD
    
            D = dirty commits (file tree fixed)
            m = modified commits (commit message or parents changed)
            . = clean commits (no changes to file tree)
    
                                    Before     After
            -------------------------------------------
            First modified commit | a1520b5a | 186e5d0a
            Last dirty commit     | 67d311f2 | 2ea2144f
    
    Deleted files
    -------------
    
            Filename                                           Git id
            ------------------------------------------------------------------------------------------------
            box_cjg_people_2.9.tgz                           | 04960a9c (135.4 MB)
            kyai_chrislusf_seaweedfs_x86-v1.0.0_20230508.tar | bf7a1441 (116.4 MB)
            kyai_fauria_vsftpd_arm-v1.0.0_20230628.tar       | 348db2e3 (389.1 MB)
            kyai_fauria_vsftpd_x86-v1.0.0_20230504.tar       | 70a54bc7 (389.1 MB)
            kyai_kykj_arm-v1.0.0_20230628.tar                | 3271d85e (507.3 MB)
            kyai_kykj_x86-v1.0.0_20230724.tar                | 16020abb (513.0 MB)
            kyai_mysql_arm-v8.0_20230628.tar                 | 929b052d (573.9 MB)
            kyai_mysql_x86-v8.0_20230724.tar                 | f52a861d (552.7 MB)
            kyai_nginx_arm-v1.18_20230627.tar                | b5b6653d (123.8 MB)
            kyai_nginx_x86-v1.18_20230724.tar                | 0f266b2a (130.8 MB)
            kyai_rest-latest.tar                             | fbe6f9ae (390.9 MB)
            kyai_rest-v1.0.0_20230326.tar                    | d46e4290 (390.9 MB)
            kyai_rest_arm-v1.0.0_20230624.tar                | 0d0c8f14 (429.7 MB)
            kyai_rest_x86-v1.0.0_20230724.tar                | ab47c3c6 (401.5 MB)
            kyai_seaweedfs_arm-v1.0.0_20230629.tar           | 1538fe00 (112.7 MB)
            ...
    
    
    In total, 1872 object ids were changed. Full details are logged here:
    
            E:\20230228_HuiYuanKuangNaoCwProject\testKYAI\coding\kyai_3.0_tml.git.bfg-report\2023-12-11\16-05-11
    
    BFG run is complete! When ready, run: git reflog expire --expire=now --all && git gc --prune=now --aggressive
    
    E:\20230228_HuiYuanKuangNaoCwProject\testKYAI\coding>
    
  3. 清理 Git 数据并推送:

    cd repo.git
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
    git push
    

以上命令将会删除所有大于 100M 的文件,并将改动推送到远程仓库。

注意要进入项目目录执行:

E:\20230228_HuiYuanKuangNaoCwProject\testKYAI\coding\kyai_3.0_tml.git>git reflog expire --expire=now --all && git gc --prune=now --aggressive
Enumerating objects: 24994, done.
Counting objects: 100% (24994/24994), done.
Delta compression using up to 16 threads
Compressing objects: 100% (23735/23735), done.
Writing objects: 100% (24994/24994), done.
Selecting bitmap commits: 732, done.
Building bitmaps: 100% (112/112), done.
Total 24994 (delta 12924), reused 10848 (delta 0), pack-reused 0
Removing duplicate objects: 100% (256/256), done.

E:\20230228_HuiYuanKuangNaoCwProject\testKYAI\coding\kyai_3.0_tml.git>

但是执行git push的时候失败了,不知道为啥。。。

git 清空历史数据,节省服务器数据,git,git
这个错误提示通常表示在尝试向远程仓库推送数据时,网络连接中断或不稳定。这可能是由于几个原因导致的:

  1. 文件过大:如果你正在尝试上传的文件大小超过了GitHub对单个文件的限制(通常为100MB),则可能会出现此问题。

  2. 网络问题:你的网络连接可能不稳定,或者你的网络服务提供商可能限制了你的上传带宽。

  3. 服务器问题:目标服务器可能存在问题,无法接收更多的数据。

有几种可能的解决方案:

  1. 检查你的网络连接,并确保你的网络服务提供商没有限制你的上传速度。

  2. 如果你正在尝试上传的文件非常大,你可能需要将其分割成较小的部分,或者尝试使用Git LFS(Large File Storage)。

  3. 你可以尝试更改 Git 的缓冲区大小。打开命令行输入以下命令:git config --global http.postBuffer 524288000。这会将缓冲区大小设置为500MB,可能有助于解决问题。

  4. 最后,如果以上方法都不能解决问题,你可能需要联系你的服务器提供商,看看是否他们的服务器有任何问题。

后来又成功了。。。。

git 清空历史数据,节省服务器数据,git,git

清理敏感数据

当在公开的 Git 仓库中误上传了密码、API 密钥或其他敏感信息时,可以使用 BFG Repo-Cleaner 来快速清理。以下是操作步骤:

  1. 克隆一个裸仓库:

    git clone --mirror https://github.com/username/repo.git
    
  2. 创建一个文本文件(例如 passwords.txt),在其中列出需要删除的敏感词:

    password123
    API_KEY_ABCD1234
    
  3. 使用 BFG 删除敏感词:

    bfg --replace-text passwords.txt repo.git
    
  4. 清理 Git 数据并推送:

    cd repo.git
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
    git push
    

以上命令将会删除所有包含 passwords.txt 文件中列出的敏感词的提交,并将改动推送到远程仓库。

结论

BFG Repo-Cleaner 是一个非常有用的工具,可以帮助开发者在 Git 项目中清理不需要的数据。相比于其他工具,如 git-filter-branch,BFG 更简单、更快速。因此,无论是清理大文件还是敏感数据,BFG 都是一个值得尝试的工具。文章来源地址https://www.toymoban.com/news/detail-781138.html

到了这里,关于BFG Repo-Cleaner 清理在Git历史记录中不需要的数据(git仓库臃肿、git仓库太大、清理git仓库大文件、清理.git\objects\pack中的.pack文件)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • [GIT] GIT拆分仓库--不丢git提交历史记录

    如果你的代码仓库里有多个目录,你想把其中一个目录拆分出去变成一个独立的代码仓库。重要的一点是拆分的过程中要保留git提交历史记录。 进入根目录后,快速运行 ls 终端命令以确保列出所有子目录。 利用命令 git log 或 git log --onelist |wc  查看你的提交的信息和提交了多

    2024年02月09日
    浏览(81)
  • Git 使用 rebase 修改历史提交记录

    运行以下这条命令之后,它会打开一个vim编辑器,我们就可以修改上一次commit时输入的提交信息。 接下来你要是想修改描述信息的话,直接键入: i ,此时进入了输入模式。 可用键盘上下键转到描述所在的那一行,然后进行修改。 修改完成后,按下 Esc  键退出编辑模式,在

    2024年02月02日
    浏览(51)
  • VS Code查看git历史记录

    下载插件 使用插件功能,查看git历史记录,查看整个项目的git历史记录 效果: 上面的是:git记录 下面的是:某一git记录所包含的(文件更改和代码更改) 查看点击的git记录的对应的文件的功能 查看文件,和普通的文件打开差不多,= 只读 = 查看点击文件的本git记录和上一

    2024年02月08日
    浏览(50)
  • idea怎么查看文件的git历史记录

    在 IntelliJ IDEA 中查看文件的 Git 历史记录是一个直观的过程。请按照以下步骤操作: 打开文件 : 首先,在 IntelliJ IDEA 中打开您想要查看历史记录的文件。 右键点击文件 : 在项目浏览器中找到该文件,右键点击文件名。 选择“Git”选项 : 在右键菜单中,找到“Git”子菜单

    2024年02月05日
    浏览(55)
  • VSCode 如何查看git提交的历史记录或逐行记录

    下载两个插件就行了 Git History GitLens 安装成功之后,任意选择一个文件,你鼠标点击哪一行代码,后面都会提示谁在什么时候做了什么,鼠标悬浮提示上便会直接显示作者,版本,时间,点击作者直接可以发邮件,非常方便呢

    2024年02月12日
    浏览(49)
  • 怎么使用Git查看项目中代码的提交历史记录?

    怎么使用Git查看项目中代码的提交历史记录? 可以在git上使用下面这段指令 在git上执行完之后,就可以在桌面上看到打印出来的日志文件了 Readme.log日志文件如下: 对指令中的代码进行解释: git log 是git导出指令 format 是需要导出的数据格式,这里是代码提交时间、提交人员

    2024年02月12日
    浏览(51)
  • [toolschain] 怎么运用git 嵌套git 管理(子文件夹中也有个git) 并且如何简单设置使用repo的笔记 本文是求助GPT的记录 实践有用

    Q:一个文件夹a,a中的文件被a中的git 1管理,同时与a平级有一个git2,怎么让git 也能管理到git1 的内容 A:如果你想让一个 Git 仓库(git2)也能管理另一个 Git 仓库(git1)的内容,你可以使用 Git 的子模块(submodule)功能。子模块允许一个 Git 仓库包含另一个 Git 仓库,使得你可

    2024年02月04日
    浏览(59)
  • vscode插件——git分支管理、查看log提交的历史记录

    不辜负曾经那份热爱 当你觉得vscode用的不顺手时,就多找些插件叭❤ 一、Git Graph 1. 安装 选择红框的\\\"扩展\\\",搜索\\\"Git Graph\\\",直接安装即可。 2. 使用 打开源代码管理菜单,会发现右上角有个小分支图标,直接点击打开Git Graph。也可以直接从底部的Git Graph打开。 打开后,可查

    2024年02月11日
    浏览(75)
  • 查看git所有分支的历史修改中改过某段代码的记录。

    如果您要查看 Git 所有分支的历史修改中改过某段代码的记录,可以使用 Git 的 git log 命令和 -S 选项以及你要查找的代码段。 下面是具体的操作步骤: 执行以下命令以在所有分支上搜索代码段的内容: 在上面的命令中, -S \\\"your code snippet\\\" 选项表示搜索某个代码片段, --all 选

    2024年02月11日
    浏览(50)
  • 【Git】—— 版本控制(忽略文件、查看修改内容,撤销未提交的修改、查看历史提交记录)

    目录 一、准备工作 二、忽略文件 三、查看修改内容 四、撤销未提交的修改 五、查看提交记录         前面学习了Git最基本的用法,包括安装Git、创建代码仓库以及提交本地代码。         下面将要学习版本控制。         先选择一个项目,给它创建一个代码仓库

    2024年02月05日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包