Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 正确使用BFG Repo清洁剂_Git_Tfs_Bfg Repo Cleaner - Fatal编程技术网

Git 正确使用BFG Repo清洁剂

Git 正确使用BFG Repo清洁剂,git,tfs,bfg-repo-cleaner,Git,Tfs,Bfg Repo Cleaner,该站点提供了使用工具清理存储库的示例,如下所示: 克隆您的回购协议的新副本 $ git clone --mirror git://example.com/some-big-repo.git 运行BFG清理您的回购 $ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git 使用git gc去除不需要的脏数据 $ cd some-big-repo.git $ git reflog expire --expire=no

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

克隆您的回购协议的新副本

$ git clone --mirror git://example.com/some-big-repo.git
运行BFG清理您的回购

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

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

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

另外,我的一位同事说了以下几点,我想知道这是否属实:

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


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

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


TFS不提供回购协议;你的同事是对的。有关确认信息,请参阅。

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


TFS不提供回购协议;你的同事是对的。请参阅以获得确认。

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

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

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

出于安全考虑,我总是会重新命名旧的回购协议,并创建一个新的回购协议。甚至可能还有另一个回购协议名称,这样我的同事就不会将错误的回购协议合并到他们的工作副本中


如果您真的愿意,可以使用git push-all-force并在TFS repo上重写完整的历史记录。但是旧的历史已经过去了。

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

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

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

出于安全考虑,我总是会重新命名旧的回购协议,并创建一个新的回购协议。甚至可能还有另一个回购协议名称,这样我的同事就不会将错误的回购协议合并到他们的工作副本中


如果您真的愿意,可以使用git push-all-force并在TFS repo上重写完整的历史记录。但是旧的历史已经过去了。

所以TFS回购协议应该被删除,并在这种情况下创建一个新的回购协议?我假设我仍然在我原来的帖子中执行步骤3。正确吗?那么TFS回购协议应该被删除,并在这种情况下创建一个新的协议?我假设我仍然在我原来的帖子中执行步骤3。正确吗?我可能错了,但我不认为强制推送可以处理远程repo中挂起的死引用的情况,但我认为指定-mirror将根据通常情况,命令拒绝更新不是用于覆盖它的本地引用的祖先的远程引用[…]此标志禁用这些检查,并可能导致远程存储库丢失提交。如果包括第一次提交在内的所有提交都被重写,我不确定它是否会工作,但如果不是这样,它应该可以工作。这就像是对一个有很多提交的非常旧的分支进行重定基一样。我可能错了,但我认为强制推送不会处理远程repo中挂起的死引用的情况,但我认为指定-mirror会根据通常情况,该命令拒绝更新不是用于覆盖它的本地引用的祖先的远程引用[…]此标志禁用这些检查,并可能导致远程存储库丢失提交。如果所有提交(包括第一次提交)都已重写,我不确定它是否会起作用,但如果没有,它应该会起作用。这就像重新设置一个包含大量提交的非常旧的分支。