특정 명령과 옵션 조합을 비활성화하는 방법이 있습니까?

특정 명령과 옵션 조합을 비활성화하는 방법이 있습니까?

새 저장소를 만들고 커밋을 시도한다고 가정해 보겠습니다. Git이 나에게 보여줬어

*** Please tell me who you are.

Run

  git config --global user.email "[email protected]"
  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(using)이 제안한 두 줄을 실행 --global하고 즐겁게 커밋했습니다.

일주일 후 나는 다른 프로젝트에 필요한 완전히 관련되지 않은 프로젝트에 대한 새 저장소를 만들었습니다 user.email. 커밋을 시도하는 것에 대해 두 번 생각조차 하지 않았고 user.email그것이 진행되어 오리진으로 푸시되었습니다.

위와 같은 상황이 두 번이나 발생했는데, 이를 금지할 수 있는 방법이 없을까 고민하게 되었습니다 git config --global.

예를 들어, 내가 실행하면

git config --global user.email "[email protected]"

bash가 명령을 실행하지 않고 경고를 표시하길 원하지만 실행하면

git config user.email "[email protected]"

통과되길 바랍니다.

가능합니까?

답변1

가장 간단한 방법은 이 경우(Bash용)에 대한 함수를 만드는 것입니다.

git() {
    for arg in "$@"; do
        if [[ $arg == --global ]]; then
            echo "Don't use '--global'!"
            return 1
        fi
    done 
    command git "$@"
}

--global이는 존재 여부를 확인하지 않는다는 점에 유의하십시오 .실제로git예를 들어 다른 옵션에 대한 옵션 인수가 아닌 옵션은 적어도 쉘이 아닌 다른 곳에서 실행되는 경우에는 중요하지 않습니다. 또한 를 포함하기 위해 git 별칭을 생성하면 --global이것 등에 의해 잡히지 않습니다. 분명히 당신은 또는 를 실행 하거나 함수 정의를 취소 command git하여 보호를 우회 할 수도 있습니다./usr/bin/git

관련 정보