2015-08-28 69 views
2

我正在使用Git for windows。编辑命令行中的Git别名

安装完成后,我在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

您需要引用别名:'git config --global alias.st“diff --stat”'或'--stat'将被视为“git config”选项,而不是“diff”。我不确定这是否会产生你描述的问题。 – meagar

+0

@meagar你是对的。引用解决了这个问题。愚蠢的我。刚刚必须添加 - 替换 - 所有Git警告! – ricardomenzer

+0

@meagar你想添加一个答案,所以我可以将其标记为正确的?我的错误是'status'不需要引号,因为它只有一个单词。当我复制并粘贴它时,我并没有意识到需要引用更复杂的别名。 – ricardomenzer

回答

4

与其他任何配置选项一样,您可以通过运行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 regexp 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一个配置行,并解决您的问题为好。