在命令行中编辑Git别名

在命令行中编辑Git别名,git,bash,alias,Git,Bash,Alias,我正在使用Git for windows 安装之后,我在gitbash命令行上设置了一些Git别名。我用过: git config--global alias.st status 但是现在,我想将别名更改为diff--stat。然后,在Git bash上,我键入了Git config--global alias.st diff--stat,但它似乎没有替换以前设置的别名。当我键入git st时,它仍在运行git status。 当然,我可以转到gitconfig文件并对其进行编辑,但我想使用命令

我正在使用Git for windows

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

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


那么,有没有替换别名的方法?

与任何其他配置选项一样,您可以通过运行git config--global alias.st来设置值,替换旧的值。遇到的问题是,如果要在所设置的值中使用空格,则需要使用引号:

git config --global alias.st "diff --stat"
不幸的是,如果您已经尝试在没有引号的情况下运行,那么您也可能触发了另一个问题。从以下位置查看此位:

简介

'git config' name [value [value_regex]]
注意,那个位被称为
value\u regex
?由于您没有引用以前的命令,
diff
被解释为
,而
--stat
被解释为
值_regex
。那有什么用?嗯

可以使用--add选项将多行添加到一个选项中。如果 您希望更新或取消设置可能在多个服务器上发生的选项 行,需要给出POSIX regexp值\ u regex。只有现有的 与regexp匹配的值将被更新或取消设置

因此,git试图更新配置选项
alias.st
,该选项已经具有值
--stat
。由于不存在这样的配置行,git为
alias.st
创建了第二个配置行。您可以通过运行以下命令来确认这一点:

git config --global --get-all alias.st
它应该为
alias.st
显示两个值。要解决此问题,您应该运行:

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

这将使您恢复为
alias.st
设置一行配置,并永久解决您的问题。

您需要引用别名:
git config--global alias.st“diff--stat”
--stat
将被视为
git config
的选项,而不是
diff
。我不确定这是否会产生你所描述的问题。@meagar你是对的。引用解决了这个问题。让我哑口无言。正如Git警告的那样,只需添加--替换所有@meagar你想添加一个答案,以便我能将其标记为正确吗?我的错误是,
status
不需要引号,因为它只是一个单词。当我复制粘贴它时,我没有意识到它需要引用一个更复杂的别名;我不知道你能以某种方式提供重复的别名。我现在没有时间调查,但我会的,如果另一个答案没有出现,我会发布一个答案。@meagar是的,git允许您为配置选项指定多个值。它是git用于配置文件的一部分。我在下面的回答中贴了一个解释,以防你感兴趣。