我想在git中设置一个别名来计算存储库中的总行数,所以我进入了Git Bash并输入了这个:
git config --global alias.linecount 'ls-files -z | xargs -0 wc -l'
输入命令后,没有错误消息。然后我进入了
linecount
并收到此错误消息:
sh: linecount: command not found
我应该采用不同的方式设置别名吗?
答案 0 :(得分:5)
您设置了一个git别名,而不是shell别名。
你需要使用git来运行它。
git linecount
如果您希望使用shell功能(如管道),还需要使用shell-exec git别名。
git config --global alias.linecount '!git ls-files -z | xargs -0 wc -l'
答案 1 :(得分:4)
您错过了感叹号(!
)。
来自:man git-config
:
如果别名扩展以感叹号作为前缀,则将其视为shell命令。
你可以这样做:
git config alias.linecount 'ls-files -z'
这将是git
命令的别名,但是因为你使用shell语法(比如管道),所以它的所有参数都由git
it-self解释,所以在这里在这种情况下,您需要澄清这应该被视为shell命令。
以下是~/.gitconfig
中的示例git别名:
[alias]
linecount = !git ls-files -z | xargs -0 wc -l
从命令行,正确的语法是:
git config alias.linecount '!git ls-files -z | xargs -0 wc -l'
注意:添加--global
是可选的。
然后你叫它:
git linecount