2

在 Pro Git 中,Scott Chacon 给出了一些可能有用的别名的好例子,包括一个显示最后一次提交的例子:git last相当于log -1 HEAD

git config --global alias.last 'log -1 HEAD'

它将显示如下内容:

$ git last
commit 66938dae3329c7aebe598c2246a8e6af90d04646
Author: Josh Goebel <dreamer3@example.com>
Date:   Tue Aug 26 19:48:51 2008 +0800

    test for current head

我阅读了一些关于堆栈溢出的类似问题,例如将参数传递给 Git 别名命令,但仍然无法弄清楚这一点。

我能想出的最好办法是.gitconfig按如下方式修改我的文件:

[alias]
    last = log -1 HEAD
    mylast = "!sh -c 'echo /usr/local/bin/git last -$0 HEAD'"

然后,如果我在命令行运行它:

$ git mylast 12

我明白了:

/usr/local/bin/git last -12 HEAD

这实际上看起来是对的。但是如果我删除echo前面的,它就会像等待输入一样挂起。我尝试切换$0$1但这似乎也没有帮助。

我究竟做错了什么?

另外,有没有办法设置它,如果我只输入git last没有数字,那么它会默认为“1”?

4

1 回答 1

3
last = !sh -c 'git log "-${1:-1}" HEAD' -

这利用了shell 参数插值默认语法,如果未设置变量,${var:-default}则替换。defaultvar

于 2012-03-05T04:11:34.550 回答