2015-08-28 64 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一個配置行,並解決您的問題爲好。