BFG Repo-Cleaner states my github repo is not a valid Git repository
这是关于Stackoverflow的上一个问题的后续问题。
我尝试从本地git历史记录中删除大文件,但是此问题中建议的工具(BFG Repo-Cleaner)指出我的私有GitHub存储库不是有效的git存储库。
我使用的命令是:
1
| java -jar bfg-1.12.12.jar --strip-blobs-bigger-than 99M https://github.com/name/repo.git |
最终会导致:
1
| Aborting : https://github.com/name/repo.git is not a valid Git repository. |
我找不到解决方案。该工具与私有或https GitHub存储库不兼容吗?
如何使用替代工具git-filter-branch从本地git历史记录中删除所有大于99MB的文件?
该项目的大小约为6MB,到目前为止,仅完成了约50次提交,没有其他人对此进行任何工作。
您已经为该工具提供了GitHub URL,但是他们网站上的用法部分说您应该使用存储库的本地副本进行操作:
Usage
First clone a fresh copy of your repo, using the --mirror flag:
1
| $ 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:
1
| $ java -jar bfg.jar --strip-blobs-bigger-than 100M some-big-repo.git |
该页面上还有很多其他好的内容;我建议您先阅读全文,然后再试。
- 感谢您的反馈!如何找到本地git存储库的名称,如some-big-repo.git?我是否将其指向.git目录?
-
@ boolean.is.null,名称仅是您克隆存储库的文件夹的名称。默认情况下,这将与远程设备上使用的匹配(在此示例中为some-big-repo.git),但是如果您向git clone添加更多选项或稍后重命名,则可能会有所不同。是的,指向.git/目录。如果您使用的是非裸克隆,我怀疑您也可以使用其根。
-
从回购中清除文件已经非常困难。我为什么要在镜子里做这项工作?现在我要处理的问题要多一倍。
-
@leerssej,因为这就是该工具的工作方式。最可能的下一步是将--force-with-lease推送回您已发布的存储库,当然,这当然伴随着强制推送到共享存储库的所有固有挑战。要求本地仓库几乎不会增加复杂性,并且与生态系统的其余部分保持一致,实际上您可以做的所有事情都在本地进行。如果要修改远程仓库,请在计算机上进行更改,然后再推送。
-
@ DaveVoyles-MSFT,这不会使我的答案不正确。请阅读上面的实际问题和我的答案。 OP试图将BFG指向远程URL,特别是远程GitHub URL。正确的答案是当前被接受的答案,它表示您需要在本地副本上运行BFG。在命令行上提供名称或在目录中输入cd是无关紧要的细节(两者都是可行的,而我的显示方式是项目文档的直接引用)。
-
"在命令行中提供名称或进入目录是一个不相关的细节"对我来说,这听起来像是一个非常相关的细节。
-
再次@ DaveVoyles-MSFT,(a)OP遇到的问题与您似乎遇到的问题不同,并且(b)该部分是文档中的直接引用。还有其他有效的方法来运行命令,这一事实既不会使答案无效,也不会使您遇到任何问题。 OP指向的是远程URL,而不是本地副本。那就是问题所在,这个答案可以解决这个问题。
-
指向不正确的文档并不能给出更正确的答案。
-
@ DaveVoyles-MSFT,不仅是文档:它有效(或者至少在编写时有效,因为您可能可以从投票和复选标记中推测出来)。如果您认为需要更新,建议的编辑会更有成效。尽管我仍不清楚您认为哪一部分不正确。至少第三次,此答案确实正确地解决了OP提出的问题。您不能将BFG指向远程URL。您需要本地副本。您首选的答案不能回答OP的问题。
-
@ DaveVoyles-MSFT,我刚刚确认java -jar bfg-1.13.0.jar path/to/repo和cd path/to/repo && java -jar path/to/bfg-1.13.0.jar的行为似乎在使用最新版本的BFG上执行相同的操作。弄清楚您认为答案中哪一部分是错误的会有所帮助。
-
我用Google搜索了这个问题,并在这里结束了。我已经阅读了文档的那部分100次。在这里找到它作为答案有点令人失望。从问题和答案中还不清楚解决方案是什么。一个好的答案实际上将包括键入内容...
-
@Andrew,"一个好的答案实际上将包括键入" a€"的内容,并且直接从文档中引出了答案。如果您有更具体的问题,请另外发问。哪一部分不清楚?
-
@Chris如果我提一个问题,它将被标记为该问题的重复项。显然,许多人发现文档令人困惑。重复它无济于事。下面的答案更好。
-
@Andrew,"下面的答案更好",还有另外两个答案,显示答案的顺序不一致。你在说哪一个?用什么方式"更好"?
-
实际上,您对这个答案有5个否决的评论是比答案本身更好的答案。问题在于文档令人困惑。因此,重复此操作无济于事。
-
@Andrew,也许您对所问的问题感到困惑? OP询问了特定的错误消息,该错误消息是由于尝试直接在GitHub URL上运行BFG Repo Cleaner而引起的。我的回答不仅是引用文档,还指出了错误并引用了文档作为支持。
-
@Chris,但是将GitHub URL放入git clone行是完全有效的。因此,这又令人困惑。 $ git clone --mirror github.com/user/projectname $ cd projectname.git $ java -jar path / bfg.jar --strip-blobs-bigger-than 100M以上事实证明了OP必须跟进答案还不够好。
-
cd是可选的。如我所显示的,您可以在运行BFG时将本地存储库的路径作为参数提供,也可以忽略它,在这种情况下,使用当前目录,您似乎更喜欢。在这种情况下,您应该位于存储库中。但是它始终是本地目录。那是OP的问题,这就是我回答的问题。您可能有一个不同的问题,这很好,但这并不意味着这个答案是错误的。它只是回答您一个不同的问题。
-
@克里斯,我从没说过错。只是不足以帮助解决问题。还不完整OP没有从中得到答案,我也没有,Dave也没有。我们必须阅读您对答案的评论才能到达那里。在我看来,这应该是答案的一部分,并将使其更加完整。
我已使用以下命令修复了此问题:
步骤1
步骤2
1
| java -jar path/bfg.jar --strip-blobs-bigger-than 100M |
如果您位于repo目录中,则无需明确提及回购名称,它会自动检测回购并执行其工作。
您应该记住,使用git,您对历史记录所做的所有操作都必须在本地完成。然后,一旦满意,就可以通过推送到远程存储库来发布。
因此,在这里您必须提供通往本地存储库的路径...
-
这里的关键词是local repository,它在包含.git文件夹的文件夹中表示我已运行:java -jar bfg -b 100M .git
-
将罐子与存储库放置在相同的文件夹中并像这样运行它应该是默认的建议,我无法使其以任何其他方式工作。谢谢!