在命令行中编辑 Git 别名

Edit Git alias in command line

我正在为 windows 使用 Git。

安装后,我在 Git bash 命令行上设置了一些 Git 别名。我用了: git config --global alias.st status

但是现在,我想将别名更改为 diff --stat。然后,在Gitbash上,我输入了git config --global alias.st diff --stat,但是好像没有替换掉之前设置的别名。当我输入 git st 时,它仍然是 运行 git status。 当然,我可以转到 gitconfig 文件并对其进行编辑,但我想使用命令行进行更改。

那么,有没有办法替换别名?

与任何其他配置选项一样,您可以设置值,将旧值替换为 运行ning git config --global alias.st <value here>。您 运行 遇到的问题是,当您希望在设置的值中包含空格时,您需要使用引号:

git config --global alias.st "diff --stat"

不幸的是,如果您已经尝试过 运行ning 不带引号,您可能也触发了不同的问题。看看 documentation for git config:

中的这一点

SYNOPSIS

'git config' name [value [value_regex]]

注意到那个叫做 value_regex 的位了吗?由于您没有引用之前的命令,diff 被解释为 value,而 --stat 被解释为 value_regex。那有什么作用?嗯...

Multiple lines can be added to an option by using the --add option. If you want to update or unset an option which can occur on multiple lines, a POSIX regexp value_regex needs to be given. Only the existing values that match the regexp are updated or unset.

所以发生的事情是 git 试图更新已经具有值 --stat 的配置选项 alias.st。由于不存在这样的配置行,git 为 alias.st 创建了一个 second 配置行。您可以通过 运行ning:

确认
git config --global --get-all alias.st

应该显示 alias.st 的两个值。要解决此问题,您应该 运行:

git config --global --replace-all alias.st "diff --stat"

这应该可以让您回到 alias.st 的配置行,并彻底解决您的问题。