BFG Repo Cleaner的正确使用方法

Bil*_*eer 4 git tfs bfg-repo-cleaner

BFG Repo Cleaner站点提供了使用该工具清理存储库的示例,如下所示:

  1. 克隆您的存储库的新副本。

    $ git clone --mirror git://example.com/some-big-repo.git
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行 BFG 来清理你的仓库。

    $ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用 git gc 剔除不需要的脏数据

    $ cd some-big-repo.git
    $ git reflog expire --expire=now --all && git gc --prune=now --aggressive
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将更改推送回远程

    $git push
    
    Run Code Online (Sandbox Code Playgroud)

我知道 head 分支受到保护,因此 head 分支中大于 100M 的任何文件仍将存在。如果我按照描述运行此工具,我将丢失上述 100M 文件的任何历史记录,对吗?因此,如果旧提交中存在该文件的旧版本,它就会消失,我将无法在以前的状态下使用它......正确吗?

另外,我有一个同事说了以下内容,我想知道这是否属实:

如果您推回到 TFS 中镜像的存储库,对包文件的更改将不会反映在远程和未来的克隆上

您必须在 TFS 中创建一个新存储库并将镜像推送到那里,以便远程选择包文件更改。

Dan*_*ann 5

仍然存在于存储库头部的任何文件都将被保留,包括历史记录。这是为了保护你不犯错误。这个想法是,您应该显式删除该文件,提交删除,然后清理历史记录以将其删除。

TFS 没有gc其存储库;你的同事是正确的。请参阅Team Foundation Server 2015 (tfs2015) 在 org/remote 上运行 git gc --prune=now 进行确认。