如何设置接受数字作为参数的“git last”的别名?

时间:2012-03-05 04:05:32

标签: linux git bash git-config

在Pro Git中,Scott Chacon给出了some alias which might be helpful的一些很好的例子,包括显示最后一次提交的例子: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

我在类似Pass an argument to a Git alias command的堆栈溢出上阅读了一些类似的问题,但仍未能解决这个问题。

我能想到的最好的方法是修改我的.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”?

1 个答案:

答案 0 :(得分:3)

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

如果未设置变量${var:-default},则会利用shell parameter interpolation default语法default替换var