Bash
有沒有辦法禁止某些命令和選項的組合?
說,我創建了一個新的倉庫,並嘗試送出。Git向我展示
*** Please tell me who you are. Run git config --global user.email "you@example.com" git config --global user.name "Your Name" to set your account's default identity. Omit --global to set the identity only in this repository.
在沒有閱讀最後一行的情況下,我執行了 git (with
--global
) 建議的兩行並愉快地送出。一周後,我為一個完全不相關的項目創建了一個新的 repo,我需要在不同的
user.email
. 甚至沒有考慮user.email
,我嘗試送出,它通過並推動到原點。以上發生在我身上兩次,讓我思考是否有辦法禁止
git config --global
。例如,如果我執行
git config --global user.email "you@example.com"
我希望 bash 不執行命令並向我顯示警告,但是當我執行時
git config user.email "you@example.com"
我希望它通過。
可能嗎?
最簡單的是為這種情況創建一個函式(對於 Bash):
git() { for arg in "$@"; do if [[ $arg == --global ]]; then echo "Don't use '--global'!" return 1 fi done command git "$@" }
請注意,這不會檢查是否真的
--global
有一個選項,而不是例如另一個選項的選項參數,如果從 shell 以外的其他地方執行,至少也沒有關係。此外,如果您將 git 別名設置為 include ,則不會被此擷取,等等。顯然您也可以通過執行or或僅取消定義該功能來規避保護。git``--global``command git``/usr/bin/git