显示Git命令的扩展版本
有没有办法让Git在执行别名命令之前打印它的语义 假设我将显示Git命令的扩展版本,git,command-line-interface,Git,Command Line Interface,有没有办法让Git在执行别名命令之前打印它的语义 假设我将a化名为add,我希望命令gita显示 Executing: git add 在实际输出之前。或者可能有一个echo子命令,这样我就可以将a别名为echo add,子命令打印并实际执行该命令。您需要定义别名以包含echo语句 一种方法是如下定义别名: "!echo \"executing git add\"; git add" $ GIT_TRACE=1 git st trace: exec: 'git-st' trace: run
a
化名为add
,我希望命令gita
显示
Executing: git add
在实际输出之前。或者可能有一个
echo
子命令,这样我就可以将a
别名为echo add
,子命令打印并实际执行该命令。您需要定义别名以包含echo语句
一种方法是如下定义别名:
"!echo \"executing git add\"; git add"
$ GIT_TRACE=1 git st
trace: exec: 'git-st'
trace: run_command: 'git-st'
trace: alias expansion: st => 'status'
trace: built-in: git 'status'
在这个问题中,您可以找到几种不同的方法:
如果您不介意打印多一点,您可以将
GIT_TRACE
变量设置为1
,GIT将打印(除其他外)有关别名扩展的一些信息(参见)
在我的例子中(我为状态定义了一个别名st
),如下所示:
"!echo \"executing git add\"; git add"
$ GIT_TRACE=1 git st
trace: exec: 'git-st'
trace: run_command: 'git-st'
trace: alias expansion: st => 'status'
trace: built-in: git 'status'
当然,例如,您可以在.bashrc
中放入导出GIT_TRACE=1
,使其始终处于启用状态
如果您真的只想显示别名扩展,您可能可以为运行git的git
定义一个shell别名,并从输出中筛选出以trace:
开头但不包含alias扩展:
的所有行,如果I.bashrc
它,在其他情况下不打算添加跟踪输出吗,当然,这会影响你所有的git进程。但是您可以随意设置和取消设置它,也可以在命令前面加上前缀,就像我的示例中那样,只使用它运行一次git。您找到比这两个答案更好的方法了吗?我真的希望看到别名扩展,而不是跟踪的其余部分,并将所有别名转换为!回声代码>也不是为我剪的