Bash

有沒有辦法禁止某些命令和選項的組合?

  • January 1, 2022

說,我創建了一個新的倉庫,並嘗試送出。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

引用自:https://unix.stackexchange.com/questions/684463