1

我尝试做与此处描述的几乎相同的操作,但存在相同的问题:

创建带有格式的“git log”别名

当然,这个主题的解决方案是有效的。

但是假设我想将我的 git 函数分组到 git 命名空间中,即运行git gl "some time ago". 但是当我尝试直接在 .gitconfig 中定义函数时:

gl = "!f() { git log --all --pretty=format:'%h %cd %s (%an)' --since="$1"; }; f",

我有和以前一样的错误 - fatal: ambiguous argument ...lalala...

即使在 .bash_profile 中定义函数并从 git 别名调用时也会发生同样的情况。

使用“全局”函数问题不大,但我想知道,为什么会这样?是否有可能在 .gitconfig 中定义这样的功能?

4

1 回答 1

3

这是一个引用问题。

我还没有看到任何正确描述引用如何在 git 别名中工作的东西,但这有效:

gl = "!f() { git log --all --pretty=format:'%h %cd %s (%an)' --since=\"$1\"; }; f"

也就是说,使用反斜杠-双引号将双引号传递到 shell 别名,从而扩展 $1。

请注意,您必须将其调用为:

$ git gl "one year ago"

$1如果您使用代替,$*则可以将其调用为:

$ git gl one year ago

这很方便。

于 2014-04-11T19:51:22.130 回答