6

为了简化我的担忧,我将其范围缩小到以下内容:

我有一个这样定义的 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" 进行响应。这里的重点是将输入参数传递给函数。

4

1 回答 1

7

您需要引用嵌入的双引号。

cii = "!f() { git commit \"$@\"; }; f"

然后 git 将执行标准的 shell 扩展,"$@"每个参数转换为一个单词 - 比如"$1" "$2" "$3" ...

于 2012-04-20T18:54:47.163 回答