버튼 수집상

[메모] 소스 이름만 입력해서 git 브랜치명 포맷맞추기 - placeholder for parameters in zsh 본문

TIL - 메모

[메모] 소스 이름만 입력해서 git 브랜치명 포맷맞추기 - placeholder for parameters in zsh

cocokaribou 2024. 12. 31. 10:58

현직 회사의 git 브랜치명은 아래처럼 통일된다.

fix-cafepoint-source
fix-coffeemania-source
fix-adbc-source

 

보다시피 fix-{NAME}-source의 포맷이다.

 

체크아웃 할 때마다 일일히 타이핑하다가,

이러다간 오타가 날 것 같아서 zsh run command (.zshrc) 에 function과 alias를 추가했다.

sudo vim ~/.zshrc

에디터가 뜨면 맨 아랫줄에 다음의 _branch 함수를 추가한다.

_branch() {
  # 프로젝트마다 다른 브랜치 네이밍 컨벤션을 맞춰준다.
  if [[ ${PWD} == "/Users/user/Workspace/project1" ]]; then
    echo "fix-${1}-source"
  else
    echo "fix-${1}-pipeline"
  fi
}

${PWD} 는 현재 디렉터리를 받아온다.

${1} 는 함수의 첫번째 인자를 받아온다.

 

편집후 esc + :wq 를 입력해서 변경사항 저장.

그리고 .zshrc 를 새로고침 해준다.

source ~/.zshrc

위에서 정의한 _branch 함수명을 호출하면서 인자를 넘겨주면 잘 출력되는 것을 확인할 수 있다.

pwd
>> /Users/user/Workspace/project1

_branch test
>> fix-test-source

함수의 조건문대로 디렉터리마다 다르게 출력되는지도 확인해보자.

 

이제 git checkout을 해보자.

git checkout $(_branch test)

_branch test를 입력해서 리턴되는 fix-test-source를 변수로 받아와서 git checkout 인자로 넣어줬다.
그런데 이러면 또 커맨드가 길어지므로 alias로 선언해두자.

# aliases
alias gco='git checkout'
alias gcb='git checkout -b'
#...

# function
gco_source() {
  gco "$(_branch ${1})"
}

gcb_source() {
  gcb "$(_branch ${1})"
}

이러면 이제 브랜치를 체크아웃하거나(git checkout) 로컬 브랜치를 새로 만들때 (git checkout -b)

소스명 하나만 입력하면 브랜치 네이밍 컨벤션에 맞게 포맷된다.

pwd
>> /Usesr/user/Workspace/project1

gco_source test
>> Switched to branch 'fix-test-source'

gcb_source test1
>> Switched to a new branch 'fix-test1-source'
728x90