2012-03-05 56 views
2

在Pro的Git斯科特查孔给出some alias which might be helpful一些很好的例子,其中一个,显示最后一次提交:git last这是log -1 HEAD等价的:如何为接受数字作为参数的“git last”设置别名?

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

它会显示这样的事情:

$ git last 
commit 66938dae3329c7aebe598c2246a8e6af90d04646 
Author: Josh Goebel <[email protected]> 
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”?

回答

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

这利用了shell parameter interpolation default语法,${var:-default}如果变量var未设置该替代default的优点。

+0

不错!如果没有指定参数,可以通过任何方式默认设置为1? – cwd 2012-03-05 04:13:37

+0

当然。将它从'$ 1'改为'$ {1:-1}'。 – Amber 2012-03-05 04:15:25

+1

(如果你想,你可以将'HEAD'改为'$ {2:-HEAD}',这会让你有能力请求任意分支的'git last 2 '。) – Amber 2012-03-05 04:18:31

相关问题