저번 시간엔 git 전반에 대해 다뤘다면 이번엔 git flow 에 대해서 배웠다.
개인적으로 git flow를 처음 접해보는 터라 낯설고 어려웠다.. 이제 실제로 팀에 들어가 업무를 하면 많이 쓸테니까 미리미리 익숙해져야지!!
gif-flow 활용법에 앞서 git-flow를 적용하는 브랜치 모델에 대해 알 필요가 있다. git의 장점 중 하나가 바로 브랜칭 기능을 적극 사용할 수 있다는 것이다.
git-flow의 브랜칭 모델은 아래와 같다

이 모델은 아래와 같이 총 5가지의 브랜치로 되어 있다. 쉽게 말해 하나의 소스코드를 두고 다섯가지의 가지로 나뉘어 각각 그 가지에서 개발 및 작업을 하게 되는 것이다.
master는 실제로 운영에 배포될 소스코드다. 그리고 현재 운영에 반영되어 있는 코드가 가장 최신으로 되어 있을 것이다. 당연히 이 브랜치에서는 바로 작업할 순 없으니 나머지 브랜치들이 필요한 이유이다!
이름에서 알수 있듯이 운영에 반영된 코드가 아닌 현재 개발버전의 소스코드들이 있는 곳이다. 그리고 개발을 할 때에도 여러명, 여러 기능을 개발해야하므로 한 브랜치에서 하는 것은 좋지 않다. 그래서 나머지 브랜치들이 필요한 것이고 이러한 브랜치 모델을 적용하는 것이 좋다!
개발자들은 이제 feature 브랜치에서 각각 자신들이 맡고 있는 기능 및 부분을 작업하게 된다. 그리고 최종적으로 작업 내용을 develop에 merge한다.
develop에 있는 개발버전의 코드들이 master 브랜치로 병합되기 전, 이 release 브랜치에서 각종 테스트들을 거치게 된다.
만약 master에서 배포된 소스에 버그가 생겨 급하게 수정해야할 때 이 hotfix 브랜치에서 수정하게 된다.
이 중 master와 develop이 주된 브랜치 이고 나머지는 개발 작업을 위해 필요에 의한 브랜치 이다.
앞서 설명한 브랜치 모델을 git flow를 이용하여 활용할 수 있다. 가장 주되게 사용할 feature와 release 사용법을 정리해보았다.
자신의 git 저장소에 git-flow를 초기화 해야한다.
git flow init
)
위와 같이 branch 이름 지정을 물어보는 질문이 나오면 다시 명령어 입력 라인이 나올때까지 엔터를 누른다!
git flow feature start <feature name>
이제 feature 브랜치를 만들어 개발을 시작할 수 있다.
에는 feature 브랜치의 이름 예를들어 현재 개발하고있는 기능이 로그인이라면 login 이라고 하면 된다.
git flow feature start login
-> login 기능을 개발하는 feature 브랜치를 시작하겠다는 뜻!
git flow feature finish login
개발이 끝났다면 이제 해당 feature 브랜치가 끝났다는 명령어를 실행한다. 그럼 이 브랜치가 develop 브랜치로 병합되고 login이라는 브랜치는 삭제된다.
git flow release start <version>
release 브랜치를 생성하고
git flow release finish <version>
작업을 완료하여 finish한다. 이때
1) release -> master 로 병합
2) release 하는 버전의 태그 생성
3) release -> develop으로 병합
이 과정이 발생한다.
모든 과정이 끝나면 release 브랜치는 삭제된다.
하지만 아직까진! 원격 저장소에는 반영이 되어 있지 않다. release 할 새로운 버전의 tag가 있는 master 브랜치를 원격 저장소에 push 해야한다.
git push --tags
이렇게 브랜칭 모델과 git flow 활용법을 정리해보았다. 정리하다보니 내가 헷갈렸던 부분을 확실히 알 수 있었다. 아마 실습 할 때엔 또 헤맬수도 있지만....계속해서 익숙해져야지!!