使用别名时是否有显示完整命令的选项?
示例:
$ 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
...
别名非常方便,但我喜欢学习/提醒我的别名实际上做了什么(我的大部分别名是从互联网上复制的)
答案 0 :(得分:3)
另一个选项是Aliases给出的Git wiki部分中列出的命令构思,alias
.git/config
部分
[alias]
aliases = !git config --get-regexp 'alias.*' | colrm 1 6 | sed 's/[ ]/ = /'
然后将所有别名列为命令行。
答案 1 :(得分: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"
,别名为
lg = "!sh -c 'echo \"Full command: git log --graph --pretty=mine --abbrev-commit --date=relative\"; git log --graph --pretty=mine --abbrev-commit --date=relative' -"
答案 2 :(得分:0)
如果您正在使用bash,则可以在别名中添加“set -x”。所以,举个简单的例子,如果你有一个别名:
ol = !sh -c 'git log --oneline'
你将其改为:
ol = "!sh -c 'set -x; git log --oneline'"
由于分号,它需要双引号。
为了允许命令行的其余部分,你需要添加“$ @”,并且还添加一个“ - ”,以便参数从$ 1开始。这给你:
ol = "!sh -c 'set -x; git log --oneline $@' -"
更复杂的别名可能已经有了这些东西。
我不知道为所有别名设置全局别名的方法虽然它会很好!
编辑: 这实际上使用shell函数更容易一些。你可以这样做:
git config alias.ol '!f() { set -x; git log --oneline $@; }; f'
获得与上述相同的效果。
答案 3 :(得分:0)
使用环境变量GIT_TRACE
启用git的trace feature将显示git别名扩展后git执行的确切命令。
这还将减轻产生(另一个)shell以及进行任何处理所引起的所有开销。
更复杂的git命令将提供详细的输出,解释git在做什么。如果只想知道别名扩展的结果,则可以捕获stderr和grep进行扩展(请参见下面的示例)。但是,请注意使用实际修改存储库的命令来执行此操作(如果适用,请使用--dry-run)。
具有别名ls1
的定义为:
~$ cat .gitconfig|grep ls1
ls1 = log --oneline -1
将产生如下输出(在默认own repository提交2befe97后,在git的branch master上执行):
~/git (master=)$ GIT_TRACE=1 git ls1
11:14:16.075127 git.c:561 trace: exec: 'git-ls1'
11:14:16.075182 run-command.c:334 trace: run_command: 'git-ls1'
11:14:16.078823 git.c:278 trace: alias expansion: ls1 => 'log' '--oneline' '-1'
11:14:16.079032 git.c:344 trace: built-in: git 'log' '--oneline' '-1'
11:14:16.080189 run-command.c:334 trace: run_command: 'pager'
11:14:16.080536 run-command.c:193 trace: exec: 'pager'
2befe97 Eighth batch
~/git (master=)$
~/git (master=)$ GIT_TRACE=1 git ls1 2>&1 |grep "trace: alias expansion"
11:37:45.014231 git.c:278 trace: alias expansion: ls1 => 'log' '--oneline' '-1'
~/git (master=)$