显示 Git 命令的扩展版本

Show expanded version of Git command

有没有办法让 Git 在执行别名命令之前打印其语义?

假设我已将 a 别名为 add,我希望命令 git a 显示

Executing: git add

在实际输出之前。或者也许有一个 echo 子命令,以便我将 a 别名为 echo add 并且子命令打印并实际执行命令?

您需要定义别名以包含 echo 语句。

一种方法是像这样定义别名:

"!echo \"executing git add\"; git add" 

您可以在这个问题中找到几种不同的方法:

How to embed bash script directly inside a git alias

如果您不介意多打印一点,您可以将 GIT_TRACE 变量设置为 1 并且 git 将打印(除其他外)一些关于别名扩展(参见man page)。

在我的例子中(我为 status 定义了一个别名 st),它看起来像这样:

$ GIT_TRACE=1 git st
trace: exec: 'git-st'
trace: run_command: 'git-st'
trace: alias expansion: st => 'status'
trace: built-in: git 'status'

当然,例如,您可以将 export GIT_TRACE=1 放入您的 .bashrc 以始终启用此功能。

如果您真的只想显示别名扩展,您可以为运行 git 的 git 定义一个 shell 别名,并从输出中过滤掉所有开始的行包含 trace: 但不包含 alias expansion:.