设置git别名,但是然后调用它会给出“找不到的命令”'

时间:2015-10-19 18:05:11

标签: git bash alias

我想在git中设置一个别名来计算存储库中的总行数,所以我进入了Git Bash并输入了这个:

git config --global alias.linecount 'ls-files -z | xargs -0 wc -l'

输入命令后,没有错误消息。然后我进入了

linecount

并收到此错误消息:

sh: linecount: command not found

我应该采用不同的方式设置别名吗?

2 个答案:

答案 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