2012-06-21 28 views
10

使用別名時是否有顯示完整命令的選項?執行Git別名時顯示完整命令?

例子:

$ git ci -m "initial commit" 
Full command: git commit -m "initial commit" 
... 
$ git lg 
Full command: git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative 
... 

別名是很方便,但我喜歡學習/提醒究竟做我的別名(我大部分的別名都是從網上抄)

回答

2

舉個例子:

log-1 = "!sh -c 'echo \"Full command: git log --graph --decorate --pretty=oneline --abbrev-commit\"; git log --graph --decorate --pretty=oneline --abbrev-commit' -"

你叫shell並執行給定的命令。

在你的lg例子中,你必須做很多轉義,因爲你需要在qoutes和需要轉義的字符中引用引號。我建議你創建你自己的漂亮格式,並在別名中使用它。讓我們假設我們稱你的格式爲我的。這就是你需要做什麼:

git config --add pretty.mine "%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset"

如果你正在使用bash,你可以加上 「set -x」 的別名別名是

lg = "!sh -c 'echo \"Full command: git log --graph --pretty=mine --abbrev-commit --date=relative\"; git log --graph --pretty=mine --abbrev-commit --date=relative' -"

0

。所以,作爲一個簡單的例子,如果你有一個別名:

ol = !sh -c 'git log --oneline' 

你將它更改爲:

ol = "!sh -c 'set -x; git log --oneline'" 

它需要周圍,因爲分號的雙引號。

爲了允許命令行的其餘部分,您需要添加「$ @」,並添加「 - 」,以便參數從$ 1開始。這給你:

ol = "!sh -c 'set -x; git log --oneline [email protected]' -" 

更復雜的別名可能已經在這個東西了。

我不知道一種方法來設置全局的所有別名,雖然它會很高興!

編輯: 這實際上使用shell函數更容易一些。你可以這樣做:

git config alias.ol '!f() { set -x; git log --oneline [email protected]; }; f' 

以獲得與上述相同的效果。

+0

我不確定它是否可以使用git別名(即那些在git config中定義的) – CharlesB

+0

它會。那是我測試它的地方。 – seumasmac

+0

我的意思是如果git日誌別名git log --oneline **在git config **,它會工作嗎? – CharlesB

3

另一種選擇是Aliases至極給出了Git的維基節中列出的命令理念,爲.git/config

[alias]

aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /' 

alias節這然後列出所有你的別名命令行。