모든 git 명령이 엉망이 되었습니다. 어떻게 해결하나요?

모든 git 명령이 엉망이 되었습니다. 어떻게 해결하나요?

나는 이렇게 했습니다(-v를 사용하여 "self" 별칭을 설정하려고 시도했습니다).

 git() { if [[ $1 == "commit" ]]; then command git commit -v; else command git "$@"; fi; }
  git() { if [[ $1 == "commit" ]]; then command git commit -v; else command git "$@"; fi; }
  git() { git commit }; )
  git() { git commit; }
  git() { git (); }
  git() { git(); }
  git() { git() }

이제 모든 git 명령이 중단됩니다. 오류는 없지만 프롬프트가 반환되지 않습니다.

git을 제거하고 설치했지만 도움이 되지 않았습니다.

git 명령을 기본값으로 재설정하는 방법은 무엇입니까?

나는 이것을 시도했지만 mv .gitconfig .gitconfig_old도움이 되지 않습니다.

답변1

당신은 듣고진짜혼란스러워하세요.

실행하는 모든 함수 정의는 다음과 같습니다.껍데기. 명령줄에서 직접 실행하면 현재 실행 중인 셸 환경에만 영향을 미칩니다. 따라서 터미널을 닫고 새 터미널을 시작하면 정의가 손실되고 모든 것이 정상으로 돌아갑니다. 또는 unset -f다음에 설명된 대로 설정되지 않은 정의를 사용할 수 있습니다.논평.

그렇기 때문에 git을 다시 설치해도 문제에 아무런 영향을 미치지 않습니다.

이름을 바꿔도 .gitconfig아무런 효과가 없습니다. 에서는 변경하지 않았는데 .gitconfig왜 그럴까요?

당신이 가지고 있다면조언을 따랐다이전 질문에서 git의 별칭 방법을 사용하여 별칭을 설정한 다음 별칭을 이동하면 .gitconfig효과가 있으며 별칭(및 기타 모든 구성)이 효과적으로 삭제됩니다.

git그건 그렇고, 재정의된 기본 명령과의 이러한 모든 혼란은 이러한 이름 다시 매핑이 자체 별칭 시스템에서 허용되지 않는 주된 이유입니다. 인용하다git-config 맨페이지:

"스크립트 사용과 관련된 혼란과 문제를 피하기 위해 기존 git 명령을 숨기는 별칭은 무시됩니다."

관련 정보