zoukankan      html  css  js  c++  java
  • 使用BFG清除git仓库中的隐私文件或大文件

    使用git时间不长,在调机械臂项目的时候,由于对TwinCAT3和vs的机制不太了解,没有添加很好的忽略文件(.gitignore)。造成git仓库包含了很多没有用的文件,例如vs的sdf文件,TwinCAT3的PLC编译文件等等。当时急着赶项目结题也没有考虑特别多,抱着能用就行的心态。现在项目结题初期的检测工作已经完成,回来填之前留下的坑。

    通过查找资料,看到可以通过BFG工具来清理git仓库。在GitHub的帮助页面中也推荐了这个工具。官网说是比git-filter-branch工具快10-720倍。这里根据我的使用,介绍一下这个工具。

    这个工具的官网:https://rtyley.github.io/bfg-repo-cleaner/

    这是一个Java程序,使用的话需要安装Java运行环境

    使用方法:

    主要是将官网的流程用中文来写一下。其中的仓库以我本人的机械臂代码仓库为例子。使用起来很简单,快捷。

    1.下载官网的程序包。例如我这里下载的为bfg-1.13.0.jar,之后将程序包放到一个文件夹里,为了方便,重命名为bfg.jar。

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

    git clone --mirror git@github.com:huipengly/RobotArm.git

    3.清除大文件,文件夹,隐私文件

    这里官网给出的命令是这样的。第一句是删除文件,第二句是删除文件夹,两个语句的区别在附加参数上。这里,不指定文件/文件夹位置,只是用名称匹配。

    java -jar bfg.jar --delete-files RobotArm.sdf RobotArm.git
    java -jar bfg.jar --delete-folders _Boot RobotArm.git

    这样会有一个问题,这种情况bfg会保护当前版本(HEAD所指的版本),不去清理。提示如下。

    Protected commits
    -----------------
    
    These are your protected commits, and so their contents will NOT be altered:
    
     * commit ******* (protected by 'HEAD')

    如果说当前版本已经没有问题,那么这么使用没有问题。

    但是我的当前版本也是有需要删除的文件的,在谷歌搜索了一下,找到了解决方法。

    在命令行下加入--no-blob-protection命令,可以解除保护。我使用的命令如下。

    java -jar bfg.jar --delete-files RobotArm.sdf RobotArm.git --no-blob-protection
    java -jar bfg.jar --delete-folders _Boot RobotArm.git --no-blob-protection

     4.清理不需要的数据

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

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

    5.推送到GitHub

    最后,更新完本地仓库后,将数据推送到GitHub远程仓库。按照官网描述,由于之前使用了--mirror参数,推送时会推送所有内容。

    git push

    参考:

    1.Removing sensitive data from a repository

    2.BFG Repo-Cleaner

    3.How to remove a protected commit using BFG

  • 相关阅读:
    SQL 分组 行变列的一个例子
    用JS如何獲得DropDownList所選Text和Value?
    用了.net2.0,再用1.1的问题。1.1里修改.cs文件不重新编译,.dll不重新生成。
    ASP.NET中上传文件
    获得用户控件的值!
    在没有vs2005环境里部署Crystal Reports 10水晶报表
    onkeypress,onkeydown,onkeyup区别
    2012湖南大学第八届程序设计竞赛 Incredible[公式]
    POJ3624 Charm Bracelet[01背包问题入门]
    HDOJ1257 最少拦截系统[DP入门]
  • 原文地址:https://www.cnblogs.com/huipengly/p/8424096.html
Copyright © 2011-2022 走看看