GitNotes.11-3.md
본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

Section 11.3: 고급 별칭(alias)들

git 의 alias 는 선언시에 ! 를 앞에 붙임으로써 git 명령어 외의 명령어들과 전체 sh shell 의 문법까지도 사용할 수가 있다.

~/.gitconfig 파일에 다음과 같이 입력한다:

[alias] temp = !git add -A && git commit -m "Temp"

이러한 ! 를 접두어로 하는 alias 선언에서 전체 shell 문법이 사용가능하다는 것은 커맨드라인상의 파라미터 등을 활용하는 shell function 을 통해 다양하고도 더욱 복잡한 alias 기능을 만들 수 있다는 것을 의미한다:

[alias] ignore = "!f() { echo $1 >> .gitignore; }; f"

위 alias 예제는 f 라는 이름의 함수를 선언하며, 실행시 alias 에 전달되는 모든 파라미터들을 해당 함수에서 사용 가능하도록 한다. 만약 git ignore .tmp/ 와 같은 명령을 실행한다면, 사용자의 .gitignore 파일에 ".tmp/" 가 추가될 것이다.

사실, 이렇듯 git 이 $1, $2, 등의 변수를 제공해 주어 사용자가 이를 위해 따로 특별한 함수를 선언할 필요가 없다는 점은 매우 편리하다. (그러나 alias 선언에서 실제 이러한 변수들을 사용한다 하더라도, git 이 명령줄 끝에 파라미터를 추가할 것이기 때문에 가장 마지막에 더미 커맨드를 추가해야 한다는 점을 염두에 두어야 한다.)

또한 이렇게 ! 를 접두어로 하는 alias 들을 실행시, 현재 디렉토리는 더 깊이 들어가 있을지라도 명령 실행은 checkout 된 git 저장소의 루트 디렉토리에서 실행될 것이라는 점에 유의하라. 이러한 특성을 이용하면 저장소의 루트 디렉토리에서 명령을 실행하고자 할때 cd 를 통해 디렉토리를 명시적으로 이동하지 않아도 되어 편리하다.

[alias] ignore = "! echo $1 >> .gitignore"

역주: 위 예제 실행시 이전 단락에서 설명한 것처럼 $1 에 해당하는 파라미터가 명령줄 끝에 붙게되어 실제 .gitignore 에 파라미터가 반복되어 추가되는 것을 확인할 수 있습니다.

[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)

반응형

+ Recent posts