设置 git 别名,但随后调用它会得到 'command not found'

set up git alias, but then calling it gives 'command not found'

我想在 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

If the alias expansion is prefixed with an exclamation point, it will be treated as a shell command.

你可以这样做:

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