개발자로서, 아마도 매일 Git CLI(명령 줄 인터페이스)를 사용하실 것입니다. 그러나 똑같은 명령어를 반복해서 쓰는 것은 힘든 일일 수 있습니다, 특히 명령어가 긴 경우에는 더 그렇습니다. 이때 Git 별칭이 도움이 됩니다.
본 글에서는 별칭을 사용하여 Git 명령어를 간단하게 하는 방법에 대해 배우게 됩니다.
목차
필수 조건
-
Git에 대한 지식.
-
Git Bash 설치(선택 사항이지만 Windows 사용자에게 권장됨).
-
VS Code와 같은 IDE(이것 또한 선택 사항).
Git 별칭이란?
Git 별칭은 기존 Git 명령에 대한 사용자 정의 바로 가기로, 일반적인 작업을 보다 빠르고 쉽게 만들어줍니다. 이를 통해 명령을 정의하고 원하는 대로 바로 가기를 조정할 수 있습니다.
Git 구성 파일을 통해 Git 별칭을 추가/생성하는 두 가지 주요 옵션이 있습니다. Git 구성 파일을 사용하거나 CLI(터미널/명령줄)을 통해 직접 추가할 수 있습니다.
글로벌 Git 구성 파일을 통해 Git 별칭 추가하는 방법(권장)
이 옵션은 글로벌 Git 구성 파일을 열고 Git 별칭을 파일 맨 아래에 추가하는 것을 포함합니다.
선호하는 Git 편집기 설정 방법
기본 Git 구성 편집기 소프트웨어를 설정하십시오. 예를 들어, 저는 Git 구성 파일을 편집할 때 VS Code를 사용하지만 원하는 텍스트 편집기/코드 편집기를 사용할 수 있습니다.
이 명령을 실행하여 Windows(CMD/PowerShell)에서 기본 편집기로 메모장을 설정하십시오.
git config --global core.editor "notepad"
Windows 및 MacOS/Linux에서 기본 편집기로 VS Code를 설정하려면 이 명령을 실행하십시오.
git config --global core.editor "code --wait"
다른 기본 편집기로 설정하려면 온라인에서 “기본 Git 편집기로 {editor} 설정”을 검색한 후 {editor}
를 원하는 앱으로 바꿔주십시오.
Git 구성 파일 열기 방법
원하는 터미널을 열고 다음 명령을 입력하십시오. 이 명령은 글로벌 Git 구성 파일(git config --global
)을 편집 모드(-e
)로 엽니다.
git config --global -e
다음 위치에서 git 구성 파일을 직접 열 수 있습니다.
맥 OS: 홈 디렉토리 → 숨김 파일 표시 (Cmd + Shift + H) → .gitconfig
윈도우: C:\Users\YourUsername\
→ 숨김 파일 표시(View에서) → 그리고 .gitconfig
찾기
리눅스: 홈 디렉토리 → 숨김 파일 표시 (Ctrl + H) → .gitconfig
구성 파일을 통해 Git 별칭 추가하는 방법
Git 별칭을 처음으로 추가하는 경우 .gitconfig
파일을 열고 맨 끝에 [alias]
를 추가한 후에 단축키를 나열하십시오. 이렇게 하면 Git에서 이것들이 별칭임을 알 수 있습니다. 원하는 별칭(실행하고 싶은 단축명령)을 추가하십시오.
Git 별칭의 형식은 <alias> = <command>
이므로 다음과 같습니다:
co = checkout
cob = checkout -b
위 예시의 설명:
co = checkout
이 명령어는 git checkout
명령어를 더 짧은 git co
명령어로 매핑합니다. 그럼 당신은 터미널에서 git co feature/123
를 호출할 것입니다.
명령어 앞에 git
를 입력할 필요가 없습니다. 왜냐하면 구성이 해당 명령어가 Git 명령어임을 인식하고 자동으로 이를 추가하기 때문입니다.
참고: 명령어에 전달된 어떤 매개변수도 별칭 내에서 호출된 최종 명령어에만 적용됩니다.
이런 식으로 더 많은 별칭을 추가할 수 있습니다. 기록하고 파일을 닫으면 이 별칭들이 터미널에서 사용 가능해집니다.
CLI에서 별칭 추가하는 방법
Git 별칭을 더 간편하게 추가하고 싶다면 터미널/명령 줄에서 직접 추가할 수 있습니다.
위의 예시를 따라하면 다음과 같이 직접 추가할 수 있습니다:
명령어 형식은 다음과 같습니다: git config --global alias.{alias} "{original command}"
:
git config --global alias.co "checkout"
#또는
git config --global alias.cob "checkout -b"
이 정도면 충분합니다!
더 복잡한 단축키를 위한 사용자 정의 명령어 만들기 방법
좋아, 이것은 좋아보이지만 정말 인상적이지는 않습니다 – 몇 글자만 제거한 것 뿐이죠. 그러나 더 유용하게 만들 수 있습니다. 쉘 명령어를 사용하여 우리만의 명령어를 만들 수 있습니다.
다음 예시를 보겠습니다, 저가 자주 사용하는 명령어입니다!
new-work = !git checkout main && git pull && git cob
이 별칭은 여러 Git 명령을 하나의 쉘 명령으로 결합합니다. !
문자는 Git에게 일반 Git 명령이 아닌 쉘 명령으로 처리하도록 지시합니다.
!
없이, Git은 별칭을 Git 명령으로 처리합니다(예: checkout
은 git checkout
으로 변환됩니다). !
로 지정하면 Git은 앞에 git
을 추가하지 않고 쉘 명령으로 실행하도록 알 수 있습니다.
이러한 명령을 연결함으로써 더 유용한 별칭을 작성할 수 있습니다. 위의 명령은 다음을 수행합니다:
-
먼저,
main
브랜치를 확인합니다. -
&&
연산자를 사용하면 이전 명령이 성공적으로 실행된 경우에만 다른 명령이 실행됩니다. -
그런 다음,
main
에서 변경 사항을 내려받습니다. -
마지막으로, 다른 별칭인
git cob
을 사용하여main
브랜치에서 새 브랜치를 만듭니다.
최종 명령은 원래 Git 명령처럼 매개변수를 수용할 수 있으므로 다음과 같이 사용할 수 있습니다:
git new-work 'feature/new-work-from-main'
모든 명령에서 매개변수를 사용하는 방법
지금까지 우리는 별칭(alias) 내의 최종 git 명령어에만 매개변수를 전달할 수 있었습니다. 그러나 별칭 내의 모든 명령어 중 일부에 매개변수를 전달하려면 어떻게 해야 할까요? 셸 함수를 사용하여 이를 달성할 수 있습니다.
다음 예시를 살펴보겠습니다:
new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"
위 예시에서는 입력 매개변수를 처리하는 셸 함수를 사용하고 있습니다.
설명:
-
!f()
:-
!
는 별칭을 표준 Git 명령어가 아닌 셸 명령어로 해석하도록 Git에 알려줍니다. -
f()
는 복수의 명령어를 순차적으로 실행할 수 있도록 하는 셸 함수f
를 정의합니다.
-
-
{ }
내부의 모든 것이f()
함수 내에서 실행됩니다. -
git checkout \"\$1”'\
: 파라미터화된 Git 명령을 실행하며,$1
은 이스케이프되어 별칭에 전달된 첫 번째 매개변수로 대체됩니다.\"
이스케이프 시퀀스는 공백을 포함하는 브랜치 이름에 대해 사용됩니다. -
&&
는 각 명령이 이전 명령이 성공한 경우에만 실행되도록 하는 논리 연산자입니다.git checkout "$1"
이 실패하면 그 뒤에 오는 명령은 실행되지 않습니다. -
git checkout -b \"\$2”\
: 두 번째 매개변수의 이름으로 새 브랜치를 생성합니다. -
;
:f()
함수의 끝을 나타냅니다; -
f
: 최종f
는 별칭 함수를 즉시 호출하여, 별칭을 호출하면 함수를 선언한 후 즉시 호출합니다.
사용법:
git new-work development task/feat-123
기타 유용한 별칭
[alias]
co = checkout
cob = checkout -b
s = status
tidy-up = !git checkout main && git branch | grep -v "main" | xargs git branch -D
latest = !git checkout main && git pull
new-work = "!f() { git checkout \"$1\" && git pull && git checkout -b \"$2\"; }; f"
done = !git push -u origin HEAD
save = !git add -A && git commit
saveM = !git add -A && git commit -m
br = branch --format='%(HEAD) %(color:yellow)%(refname:short)%(color:reset) - %(contents:subject) %(color:green)(%(committerdate:relative)) [%(authorname)]' --sort=-committerdate
요약
co:
지정된 브랜치로 전환 → git co task/feat-123
cob
: 현재 브랜치에서 새 브랜치 생성 → git cob feature/123
s
: 현재 git 브랜치의 상태를 보기 위해 git status
를 호출 → git s
tidy-up
: main
을 제외한 모든 로컬 브랜치 삭제 → git tidy-up
latest
: 원격 main
브랜치의 최신 변경 내용 가져오기 → git latest
new-work
: 1번째 매개변수 브랜치에서 2번째 매개변수 브랜치를 생성 → git new-work main feat/123
git done
: 현재 브랜치를 원격 저장소(origin
)로 푸시하고 상위 브랜치로 설정합니다. 첫 번째 커밋을 푸시하려고 할 때 발생하는 오류를 해결하는 데 도움이 될 수 있습니다:fatal: 현재 브랜치에 상위 브랜치가 없습니다. 현재 브랜치를 푸시하고 원격을 상위 브랜치로 설정하려면 git push --set-upstream origin을 사용하십시오
save
: 변경된 모든 파일을 추가하고 커밋하여 기본 Git 편집기를 열고 커밋 메시지를 요청합니다 → git save
savem
: 위와 같이 동작하지만 편집기를 열지 않고 인라인으로 커밋 메시지를 전달할 수 있습니다 → git savem 'Task123: add index.html'
br:
이것은 복잡해 보이지만 실제로는 그렇게 복잡하지 않지만 별칭의 강력함을 강조합니다. 본질적으로 git branch
의 출력 형식을 사용자 정의하여 가장 최근의 커밋 날짜별로 정렬된 브랜치의 자세하고 색상이 부여된 목록을 표시합니다. 로컬로 보유한 각 브랜치에 대해 아래 이미지와 같이 보일 것입니다.
여기 Git 별칭 소개와 구성에 시작할 수 있는 유용한 별칭 예제가 있습니다.
언제든지 이에 대해 이야기 나누고 미래 기사에 대해 듣고 싶다면 Twitter에서 팔로우할 수 있습니다.
Source:
https://www.freecodecamp.org/news/how-to-simplify-your-git-commands-with-git-aliases/