2012-03-05 57 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

相關問題