이 git 별칭은 어떻게 작동하나요?

이 git 별칭은 어떻게 작동하나요?

일반적으로 git 별칭은 단일 명령으로 제한됩니다.

git config --global alias.ci commit

그래서, git commit당신은 이것을 할 수 있습니다git ci

하지만 여기에 함수를 삽입할 수도 있는 것 같습니다.

git config --global alias.up-sub '!f() { cd $1 && git checkout master && git pull && git submodule update --init --recursive; }; f'

이를 통해 전화를 걸 수 있습니다.git up-sub some-submodule

문제는 이것이 어떻게 작동하는가입니다. !f()다른 어떤 상황에서도 이 구문을 본 적이 없습니다 .

답변1

일반 쉘 함수 정의 및 호출처럼 보입니다. 폭발음만 눈에 띄는데, git-config(1)설명서를 빠르게 검색해 보면 설명이 나옵니다.

별칭 확장 앞에 느낌표가 붙는 경우 이는 쉘 명령으로 처리됩니다. 예를 들어, "alias.new = !gitk --all --not ORIG_HEAD"를 정의하고 "git new"를 호출하는 것은 쉘 명령 "gitk --all --not ORIG_HEAD"를 실행하는 것과 같습니다. 쉘 명령은 저장소의 최상위 디렉토리(반드시 현재 디렉토리일 필요는 없음)에서 실행됩니다.

강타가 없으면 git하위 명령의 별칭이 지정됩니다.

관련 정보