BFG Repo-Cleaner称我的github仓库不是有效的Git仓库

21

这是一个关于之前在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

最终导致:

Aborting : https://github.com/name/repo.git is not a valid Git repository.

我找不到解决方案。这个工具是否不支持私人或https GitHub存储库? 如何使用替代工具git-filter-branch,从我的本地git历史记录中删除所有大于99MB的文件?

该项目大小约为6MB,到目前为止仅进行了约50次提交,没有其他人在工作。

4个回答

19
请指向本地副本而不是远程副本。
您已经将您的GitHub URL提供给了该工具,但他们网站上的使用方法部分表示您应该从存储库的本地副本中进行操作。

Usage

First clone a fresh copy of your repo, using the --mirror flag:

$ git clone --mirror git://example.com/some-big-repo.git

This is a bare repo, which means your normal files won't be visible, but it is a full copy of the Git database of your repository, and at this point you should make a backup of it to ensure you don't lose anything.

Now you can run the BFG to clean your repository up:

$ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git

这个页面上还有很多其他优质内容,我建议你在再次尝试之前先阅读整个页面。


4
感谢反馈!我如何找到本地Git仓库的“some-big-repo.git”这样的名称?我需要指向“.git”目录吗? - boolean.is.null
5
@boolean.is.null,这个名字只是你克隆存储库的文件夹名称。默认情况下,它将与远程使用的名称相匹配(例如,在此示例中为“some-big-repo.git”),但如果您在“git clone”命令中添加更多选项或稍后重命名,则可能会有所不同。是的,请指向.git/目录。如果您正在使用非裸克隆,我认为您也可以使用其根目录。 - Chris
3
从代码库中清除文件已经很困难了,为什么我还要在镜像中做这项工作呢?现在我将面临两倍于之前的问题。 - leerssej
1
@leerssej,因为这就是工具的工作方式。最有可能的下一步是使用--force-with-lease强制推送回您的发布存储库,尽管当然这会带来所有强制推送到共享存储库的固有挑战。要求本地存储库添加了非常少的复杂性,并且与其余生态系统保持一致,在那里您可以进行的几乎所有操作都发生在本地。如果您想修改远程存储库,请在计算机上进行更改,然后推送。 - Chris
1
@Chris 我从未说过它是错误的。它只是不足以帮助解决问题。它是不完整的。OP 没有从中得到答案,我和 Dave 也没有。我们不得不阅读你在答案上的评论才能找到答案。这让我觉得它应该成为答案的一部分,并使其更完整。 - Andrew
显示剩余3条评论

14

我已经使用以下命令解决了这个问题:

步骤1

cd some-big-repo.git

第二步

java -jar path/bfg.jar --strip-blobs-bigger-than 100M 

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


1
你应该记住,使用git时,所有对版本历史的操作都必须在本地完成。之后,当你满意后,通过推送到远程仓库来发布更改。
因此,在这里你需要提供本地仓库的路径...

9
关键词是“本地代码库”,在包含.git文件夹的文件夹中运行命令:“java -jar bfg -b 100M .git”。请注意,这里指的是本地而非远程代码库。 - Nathan Dortman
1
将jar文件放在与repo相同的文件夹中,并像这样运行应该是默认推荐的方式,我无法通过其他方式使其工作。谢谢! - Sebastián Vansteenkiste

-1

非常简单,只需在命令行中执行以下操作:

#Change directory to the root of your git repo
cd C:\Projects\MyRepositoryFolder

#Drag the bfg.jar file (or what ever the .jar file name you have) into the repo folder you changed directory to (above). Then once done run
java -jar bfg.jar -b 100M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接