BFG Repo-Cleaner声明我的github repo不是有效的Git存储库

boo*_*ull 9 git version-control github bfg-repo-cleaner

这是关于Stackoverflow的上一个问题的后续问题.

我试图从我的本地git历史记录中删除大文件,但此问题中建议的工具(BFG Repo-Cleaner)表明我的私有GitHub存储库不是有效的git存储库.

我使用的命令是:

java -jar bfg-1.12.12.jar  --strip-blobs-bigger-than 99M https://github.com/name/repo.git
Run Code Online (Sandbox Code Playgroud)

最终导致:

Aborting : https://github.com/name/repo.git is not a valid Git repository.
Run Code Online (Sandbox Code Playgroud)

我找不到解决方案.该工具是否与私有或https GitHub存储库不兼容?我如何使用替代工具git-filter-branch从我当地的git历史中删除所有大于99MB的文件?

该项目大约6MB,到目前为止只有大约50个提交,没有其他人正在进行此项工作.

Chr*_*ris 13

您已将GitHub URL提供给该工具,但其网站上的使用部分表明您应该使用存储库的本地副本:

用法

首先使用--mirror标志克隆您的仓库的新副本:

$ git clone --mirror git://example.com/some-big-repo.git
Run Code Online (Sandbox Code Playgroud)

这是一个仓库,这意味着您的普通文件将不可见,但它是您的存储库的Git数据库的完整副本,此时您应该对其进行备份以确保您不会丢失任何内容.

现在您可以运行BFG来清理您的存储库了:

$ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git
Run Code Online (Sandbox Code Playgroud)

该页面上还有很多其他好的内容; 我建议你在再次尝试之前阅读整篇文章.

  • @ boolean.is.null,该名称只是您克隆存储库的文件夹的名称.默认情况下,这将匹配远程使用的内容(在此示例中为"some-big-repo.git"),但如果您向`git clone`添加更多选项或稍后重命名,则可能会有所不同.是的,指向`.git /`目录.如果你使用的是非裸克隆,我怀疑你也可以使用它的root. (5认同)
  • 从存储库中清除文件已经足够困难了。我为什么要对着镜子做这项工作?现在我要处理的问题是原来的两倍。 (3认同)
  • 感谢您的反馈!我如何找到本地 git 存储库的 _name_ 像 `some-big-repo.git`?我是否将它指向 `.git` 目录? (2认同)

小智 10

我已经使用以下命令修复了这个问题:

第1步

cd some-big-repo.git
Run Code Online (Sandbox Code Playgroud)

第2步

java -jar path/bfg.jar --strip-blobs-bigger-than 100M 
Run Code Online (Sandbox Code Playgroud)

如果您在 repo 目录中,则无需明确提及 repo 名称,它会自动检测 repo 并完成其工作。