我试图在git repo中移动一个子目录,成为一个新的存储库(保留现有的历史记录)。git filter-branch --subdirectory-filter失败,出现“文件编号不正确 - 无法提交”
以下是关于这方面的各种建议,我克隆了现有的repo,删除了远程,现在想使用git filter-branch命令从除新目录外的新repo中删除所有内容。但是当我运行该命令时,出现错误。
$ git filter-branch --subdirectory-filter myDirectory -- --all
C:\Program Files (x86)\Git/libexec/git-core\git-filter-branch: line 269: /libexe
c/git-core/git: Bad file number
Could not get the commits
我在Windows上使用git-bash。
纵观源git的过滤分支,这个问题似乎是试图运行此命令时:
git rev-list --reverse --topo-order --default HEAD \
--parents --simplify-merges $rev_args "[email protected]" > ../revs ||
die "Could not get the commits"
我可以毫无问题运行此命令自己 - 这取决于我代替了$ rev_args值。当我通过单提交时,一切都很好。但在脚本,它来自这里:
rev_args=$(git rev-parse --revs-only "[email protected]")
如果我运行命令,我回来有几千提交ID的字符串。
所以我怀疑问题只是脚本试图运行的命令对于shell来说太长了,导致我看到了神秘的错误消息。
那个分析听起来是否正确?如果是这样,我该怎么办呢?
我发现了一个解决方法,我会在下面发帖,但它看起来很哈克,我希望有人知道更好的方法。