在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
我在堆栈溢出上读了一些类似的问题,比如将一个parameter passing给一个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
,它就像等待input一样挂起。 我尝试将$0
转换为$1
但这似乎也没有帮助。
我究竟做错了什么?
另外,有没有办法设置它,所以如果我只是inputgit last
没有数字,那么它会默认为“1”?
last = !sh -c 'git log "-${1:-1}" HEAD' -
这利用了shell参数插值的默认语法${var:-default}
,如果变量var
没有被设置,它将替代default
语法。