我想在git中设置一个别名来计算代码库中的总行数,于是我进入了Git Bash并输入了以下命令:
git config --global alias.linecount 'ls-files -z | xargs -0 wc -l'
我输入了指令后,没有出现错误信息。然后我输入了
linecount
我遇到了这个错误信息:
sh: linecount: command not found
我应该以不同的方式设置别名吗?
你设置了一个git别名,而不是shell别名。
你需要使用git来运行它。
git linecount
如果您希望使用shell功能(例如管道),还需要使用shell-exec git别名。
git config --global alias.linecount '!git ls-files -z | xargs -0 wc -l'
你漏了一个感叹号 (!
)。
参考:man git-config
:
如果别名展开以感叹号作为前缀,它将被视为一个 shell 命令。
你可以这样做:
git config alias.linecount 'ls-files -z'
这将是一个别名,指向git
命令,但由于您使用了shell语法(比如管道),所有参数都会被git
本身解释,因此在这种情况下,您需要明确说明这应该被视为一个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
git linecount
命令运行它,但是出现了以下错误:ls-files -z | xargs -0 wc -l: ls-files: command not found
。 - sigilgit ls-files
。但是当我像你发布的那样使用 git config
别名时,git linecount
就会出现错误。 - sigil!
让ls-files
作为shell命令运行了。谢谢! - sigil
git linecount
. - Etan Reisner