2012-06-21 31 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节这然后列出所有你的别名命令行。