Git filter-branch出现问题,“模糊参数”

5
我有一个git树:
  • egit/
    • project1/
    • project2/
我想把project1拆分到另一个仓库中。因此,我打开命令提示符并进入egit文件夹。然后,按照此教程的指示,运行命令git filter-branch --prune-empty --subdirectory-filter \ project1\ master。但是我一直收到错误信息:
fatal: ambiguous argument 'project1\': unknown revision or path not in the
working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

我已经使用 git ls-tree --full-tree -r HEAD 验证了 project1 在我的 Git 存储库中,所以我不知道问题出在哪里。有什么想法吗?


你使用反斜杠有什么原因吗? - Hasturkun
命令提示符为什么要使用反斜杠?我总是感到困惑,所以如果正斜杠是正确的方式,我会改变我的习惯。但在这种情况下改为正斜杠仍然会出现相同的错误 :/ - woojoo666
所以你现在的命令是 git filter-branch --prune-empty --subdirectory-filter project1/ master,对吗?(在 GitHub 示例中,反斜杠用于转义换行符,不需要。)无论如何,你可以删除尾部的斜杠。 - Hasturkun
好的,我不知道那个,有点尴尬。我以为它是指根目录或其他什么东西的引用,我的错。现在可以工作了,哈哈。 - woojoo666
2个回答

1

使用以下命令。

git filter-branch --prune-empty --subdirectory-filter project1 master


0

这很奇怪,但是在Windows上运行git-bash时我发现了以下情况。如果远程仓库已经检出到一个分支上,那么这种格式会导致错误:

git filter-branch --prune-empty --subdirectory-filter project1 master

然而,如果您前往遠程存儲庫(在我的情況下是另一個文件夾),並執行 git checkout master,那麼篩選分支將不會出錯。
同樣地,如果遠程存儲庫已經檢查出分支,這種格式也將不會出現錯誤,並且可以將相同的分支用於新存儲庫:
git filter-branch --prune-empty --subdirectory-filter project1

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