(git flow) 이 기능브랜치 어디서 딴 것인지 알아내기

엽토군·2022년 6월 22일
0

1분 코드 스니펫

목록 보기
6/9

disclaimer: *NIX 계열에서만 작동할 겁니다. 윈도용은 따로 작성해봐야 할듯 하네요.

tl;dr

아무데서나 다음을 실행한다.

git config --global alias.flow-from "!git config gitflow.branch.$(git symbolic-ref --short HEAD).base"
git config --global alias.flow-to "!git config --unset gitflow.branch.$(git symbolic-ref --short HEAD).base && git config gitflow.branch.$(git symbolic-ref --short HEAD).base $1"

그 다음 Git Flow 사용 중인 Git 저장소에서 특정 기능 브랜치 체크아웃을 하고 다음을 실행하여 확인한다.

$ git status
On branch feature/A/B

$ git flow-from
develop # 아 또 틀렸네 이거 finish하면 안되는데

$ git flow-to feature/A/main
$ git flow-from
feature/A/main # 오케이 이제 finish해도 되겠군

$ git flow feature finish
Summary of actions:
- The feature branch 'feature/A/B' was merged into 'feature/A/main'

anatomy: 약간의 설명

git symbolic-ref --short HEAD

지금 브랜치 이름을 간소하게(즉 gitflow config가 사용하는 형태로) 출력한다.

git config gitflow.branch.브랜치명.base

기본적으로 이 명령으로 "이 기능/핫픽스/릴리즈 브랜치가 어디서 시작한 것이지?"를 알아낸다.
일반적인 Git Flow는 이걸 알 필요가 없다. 예컨대 모든 기능은 develop에서 시작하니까. 하지만 Git Flow를 응용해서 쓰고 있다면 — 그래서 어떤 기능브랜치가 develop 이외의 브랜치에서 시작할 수도 있다면 — 이걸 틀리지 않도록 해야 한다.

git config --unset gitflow.branch.브랜치명.base

Git-Flow가 feature/hotfix 등의 base를 저장하는 방법은 config를 활용하는 것이다. 브랜치명으로 섹션을 따고, base 이름에 사용자가 입력한 값을 넣는다.
따라서 기존에 설정된 Git Flow base를 삭제하려면, 섹션-이름 구간을 --unset해야 한다.

git config gitflow.branch.$(git symbolic-ref --short HEAD).base $1

이제 원하는 base branch 이름을 인자로 주어서 설정할 수 있다.

git config --global alias.flow-base '!어쩌구저쩌구'

전역 Git 별칭 명령을 작성한다. 이때 !로 시작하는 이유는, alias.flow-base에 할당할 명령문이 온전한 기존 Git 명령이 아니기 때문이다. (문자열 출력을 concat하고 있음에 유의)

profile
4년차 PHP 개발자입니다.

0개의 댓글