Jon*_*han 14 linux git ambiguous-grammar
我正在尝试运行此命令:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch filename.js' --prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)
但我一直收到这个错误:
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>...]'
Run Code Online (Sandbox Code Playgroud)
Von*_*onC 20
这取决于您使用的shell.
在Windows上,例如使用msysgit,请参阅问题477:
单引号与CMD没有特殊含义.不要指望它们与POSIX shell一样工作.像这样调用filter-branch:
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
Run Code Online (Sandbox Code Playgroud)
多行:
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
Run Code Online (Sandbox Code Playgroud)
如" 如何git filter-branch将以编程方式生成的文件列表传递给? "中所述
各种各样的参数
...-filters需要是一个单独的字符串.该字符串保存为shell变量.
因此,请确保'git rm --cached --ignore-unmatch filename.js'在您所在的shell中被视为字符串.