在命令行中编辑Git别名

时间:2015-08-28 14:45:19

标签: git bash alias

我正在使用Git for windows。

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

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

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

1 个答案:

答案 0 :(得分:6)

与任何其他配置选项一样,您可以通过运行git config --global alias.st <value here>来设置值,替换旧值。您遇到的问题是,当您想要设置值的空格时,您需要使用引号:

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

不幸的是,如果您已经尝试过没有引号的运行,那么您可能也会触发其他问题。看看documentation for git config

中的这一位
  

<强>概要

'git config' name [value [value_regex]]

请注意那里有一个叫value_regex的位?由于您没有引用上一个命令,diff被解释为value,而--stat被解释为value_regex。那是做什么的?嗯......

  

可以使用--add选项将多行添加到选项中。如果   您想要更新或取消设置多个选项   行,需要给出POSIX正则表达式value_regex。只有现有的   更新或取消设置与正则表达式匹配的值。

所以发生的事情是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的一个配置行,并解决你的问题。