问题:
我在 ~/.gitconfig(git version 2.38.1.windows.1)中手动添加了一个简单的别名,它看起来像这样:
[alias]
lg = !git log --oneline --graph -$1 #
我按如下方式使用它(期望得到与键入git log --one-line --graph -5
等效的结果):
$ git lg 5
但它不工作,我不知道我错过了什么,因为这个相同的命令为我在其他计算机上工作,以下错误引发:
$ expansion of alias 'lg' failed; 'git' is not a git command
再次检查:
我的git bash中$HOME
的值是/c/Users/myself
(和预期的一样),因此,如果我执行命令git config --global -e
,它会打开我用我的别名修改过的文件。同样,在执行命令git config --list --show-origin
后,我也可以看到我的别名:
file:C:/Users/myself/.gitconfig alias.lg=!git log --oneline --graph -$1
失败的尝试(来自其他答案):
我还尝试将别名添加为bash函数:
[alias]
lg = "!f() { git log --oneline --graph -$1; }; f"
但是,如果我从配置文件中删除别名并尝试从控制台添加它,问题仍然存在:
$ git config alias.lg 'git log --oneline --graph -$1'
此外,删除!
或#
等符号时也没有效果。
这可能是一个愚蠢的问题,但我不知道还能尝试什么,我有点困在这里...
1条答案
按热度按时间ldxq2e6h1#
别名只是替换令牌列表,没有字符串构造语言。当你需要它的时候,你可以使用shell的字符串构造。
你在这里并不需要它:
然后可以使用
git lg -5
(还可以添加其他参数),但是如果构建一个替代命令行而不是用令牌替换别名值得的话,那么可以定义一个shell函数来执行此工作,并使用别名参数执行该函数:然后你就可以
git lg 5
了。顺便说一句,这是我的首选日志别名frontender: