为了简化我的顾虑,我将其缩小为以下内容:
我有一个GIT别名定义如下:
cii = "!f() { git commit "$@"; }; f"
当我跑步时
$ git cii -m "test1"
它工作正常,但失败了
$ git cii -m "test1 and test2"
error: pathspec 'and' did not match any file(s) known to git.
error: pathspec 'test2' did not match any file(s) known to git.
有什么想法吗?
请注意,我的真正别名比上面的要复杂得多,所以请回复 cii =“commit”不是一个选项。这里的要点是将输入参数传递给函数。
答案 0 :(得分:5)
您需要引用嵌入式双引号。
cii = "!f() { git commit \"$@\"; }; f"
然后, git将执行"$@"
的标准shell扩展,转换为每个参数的单个词 - 例如"$1" "$2" "$3" ...