2012-06-27 36 views
2

在回答「Git pull hook script which executes locally」,我偶然發現用例別名內置的git命令如pullpush具有擴展。我怎麼做?如何使用別名擴展內置的Git命令?

首先想到的是:

[alias] 
    push = "!echo -n \"really push? [y/n]\";read -s -n 1 really;if [[ $really == \"y\" ]];then git push; else echo \"aborting\"; fi" 

這工作得很好,只要我沒有名字我的別名push(例如qp或類似的東西)。但只要我將它稱爲push,它就會被忽略。

有一個git方式來擴大內置的Git命令別名或做我必須建立一個別名我.bashrc

回答

4

簡短的回答:你不能

的Git不允許這種明確以防止混淆和陰影可能會影響Git命令的調用(腳本等)。請參閱git-config manpage

alias.*

命令別名git的(1)命令封套 - 例如在定義「alias.last = cat-file commit HEAD」之後,調用「git last」等價於「git cat-file commit HEAD」。爲了避免混亂,並與腳本的使用煩惱,別名隱藏現有Git命令被忽略。參數被空格分開,支持通常的shell引用和轉義。報價對和反斜槓可用於引用它們。

如您所述,您可以將別名命名爲其他名稱並使用它,或者在bash中執行此操作。但是,請注意,bash中的多字詞別名是不可能的,所以您不能擁有「git push」的別名。相反,您需要使用一個函數 - 請參閱SuperUser上的「Bash: Spaces in alias name」以獲得一些提示(您可以批量採用它)。

+0

偉大的編輯。謝謝! – eckes