disclaimer: *NIX 계열에서만 작동할 겁니다. 윈도용은 따로 작성해봐야 할듯 하네요.
아무데서나 다음을 실행한다.
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'
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하고 있음에 유의)