繁体   English   中英

正确使用BFG回购清洁剂

[英]Correct Usage of BFG Repo Cleaner

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

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

     $ git clone --mirror git://example.com/some-big-repo.git 
  2. 运行BFG清理您的仓库。

     $ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git 
  3. 使用git gc去除不需要的脏数据

     $ cd some-big-repo.git $ git reflog expire --expire=now --all && git gc --prune=now --aggressive 
  4. 将更改推回远程

     $git push 

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

另外,我有一位同事说了以下内容,我想知道这是否成立:

如果您推回TFS中已镜像的存储库,则对包文件的更改将不会反映在远程克隆和以后的克隆中

您必须在TFS中创建一个新的存储库,然后将镜像推到那里,以供远程用户选择打包文件的更改。

回购文件的HEAD上仍然存在的任何文件都将被保留,包括历史记录。 这是为了防止您犯错误。 这个想法是您应该显式删除文件,提交删除,然后清理历史记录以将其删除。

TFS不gc其回购; 你的同事是正确的。 请参阅Team Foundation Server 2015(tfs2015)在原始/远程上运行git gc --prune = now进行确认。

不久,我还使用BFG Repo Cleaner从TFS的git repo中删除了一些文件夹。

如果您还想修改头部,请使用参数--no-blob-protection

显然,在已清除(旧)中,提交的内容将丢失。 提交仍然存在,但是每个相应的提交中都缺少文件。 您将无法查看文件历史记录。

出于安全原因,我将始终重命名旧仓库并创建一个新仓库。 甚至可以使用另一个回购名称,这样我的同事就不会将错误的回购合并到他们的工作副本中。

如果确实需要,可以使用git push --all -force并重写TFS存储库上的完整历史记录。 但是后来,旧的历史消失了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM