Git Filter-Branch 错误:"致命:HEAD 不是有效的对象名称"

4

我正在尝试使用git filter-branch命令将两个子文件夹移动到一个新的代码库中。我尝试运行以下命令,结果导致致命错误。

git filter-branch --prune-empty --subdirectory-filter "adb-*" -- master

错误:

Rewrite 52d9bf5425d940f730ccdad1548b7d957936cd00 (59/59) (55 seconds passed, remaining 0 predicted)
Ref 'refs/heads/master' was deleted
fatal: Not a valid object name HEAD

有人可以告诉我可能遗漏了什么吗?


显然没有名为 abd-* 的文件。我想你期望它匹配,例如 abd-fooabd-bar,但是 --subdirectory-filter 无法做到这一点。 - torek
@torek - 谢谢。有没有办法包含多个子文件夹? - user320587
不要使用 --subdirectory-filter,你可以使用其他过滤器代替(虽然速度会慢一些,但是只有55个提交需要复制,你可能不在意这个)。 - torek
1个回答

0
有没有办法包含多个子文件夹?
您可以使用bfg-repo-cleanerhttps://rtyley.github.io/bfg-repo-cleaner/
例如:
# Delete all files named 'id_rsa' or 'id_dsa' :
$ bfg --delete-files id_{dsa,rsa}  my-repo.git

我偶尔会用它,但从未在文件夹上尝试过。
每当我需要删除文件夹时,我使用git subtree split,这不是最优化的解决方案,但可以完成工作。


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