我正在尝试运行以下命令:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch filename.js' --prune-empty --tag-name-filter cat -- --all
但是我一直收到这个错误:
fatal: ambiguous argument 'rm': unknown revision or path not in the working tree
.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
发布于 2014-01-28 15:52:12
这取决于您使用的shell。
例如,在Windows上使用msysgit,请参阅issue 477
单引号对CMD没有特殊意义。不要期望它们与POSIX shell的工作方式相同。调用过滤器-如下所示的分支:
git filter-branch --commit-filter "GIT_COMMITTER_NAME=void GIT_AUTHOR_NAME=void GIT_COMMITTER_EMAIL=just.a.test@kernel.org GIT_AUTHOR_EMAIL=just.a.test@kernel.org; git commit-tree \"$@\"" HEAD
多行:
git filter-branch --commit-filter "GIT_COMMITTER_NAME=void \
GIT_AUTHOR_NAME=void \
GIT_COMMITTER_EMAIL=just.a.test@kernel.org \
GIT_AUTHOR_EMAIL=just.a.test@kernel.org; \
git commit-tree \"$@\"" HEAD
正如在"How to pass a programmatically generated list of files to git filter-branch
?“中提到的那样
各个
...-filters
的每个参数都需要是一个单独的字符串。该字符串将保存为shell变量。
因此,请确保将'git rm --cached --ignore-unmatch filename.js'
视为您所在的shell中的一个字符串。
正如Constantine Ketskalo指出的那样,in the comments
Windows10,PyCharm,GitPython,同样的命令。
只需在字符串中将'
更改为"
,它就起作用了!
https://stackoverflow.com/questions/21394563
复制相似问题