이번주 금요일부터 본격적으로 Code.presso Java 웹 트랙 체험단 활동이 시작된다!
박수~~~👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻👏🏻
주차별 상세 커리큘럼을 보니, 2주차에 Git-flow
에 대한 내용을 다루는데, 감도 잡고 미리 예습도 할 겸 포스팅을 해보겠다😜!
Git Flow🤔?
Git-flow
는 Git
이 새롭게 활성화되기 시작하는 10년전 쯤에, Vincent Driessen 이라는 사람의 블로그 글에 의해 널리 퍼지기 시작했고
현재는 Git
으로 개발할 때 거의 표준과 같이 사용되는 방법론이다.
쉽게 생각하자면, Git-flow
는 어떠한 기능이 아니라, 서로간의 약속과 같은 방법론이라 보면 된다.
즉 Git-flow
라는 전략을 사용해 Git
을 더 효율적으로 사용할 수 있는 것이다!
정리하면, 소스 코드 형상/이력 관리를 효율적으로 하고 협업할 때 발생할 수 있는 문제점을 최소화할 수 있는 전략이 Git-flow
이다.
Git Flow 전략💡
이 그림을 보면서 개념을 잡아보자!
이와 같은 흐름으로 소스코드를 관리하자는 의미인데, 이렇게 그림만 봐서는 아직까지 감이 잘 안 잡힐 것이다😂
Vincent Driessen의 브랜칭 모델에는 5가지의 브랜치가 사용된다.
- master
- develop
- feature
- release
- hotfix
이제 이 5개의 브랜치 각각에 대해 알아보자!
🤚🏻 master 와 develop 브랜치가 가장 중요한 메인 브랜치이고, 나머지는 필요에 의해 사용하는 브랜치이다.
1️⃣ master branch
- 정식으로 배포되는 안정적인 버전의 소스코드가 관리되는 곳이다.
- master 브랜치의 HEAD는 소프트웨어의 최신 배포판의 소스코드 버전이 들어있다.
- master 브랜치에는 지난 배포판 버전의 소스코드를 따라가기 위한 태그들이 존재하는데, 이 태그를 이용해 각 릴리즈 버전의 소스코드를 빠르게 확인할 수 있다.
- master 브랜치에는 배포해도 될 만큼 충분히 안정성있는 소스코드들만이 병합되어야 한다❗️
2️⃣ develop branch
- develop 브랜치는 말 그대로 개발 브랜치로, 개발자들이 이 브랜치를 기준으로 각자 작업한 기능들을 머지(Merge)하게 된다.
- 따라서 이 브랜치에는 소스코드들이 끊임없이 추가된다.
- 버그 수정 코드, 새로운 기능을 위한 코드, 성능 개선 코드 등 이러한 코드들이 검증이 완료되고 PR(Pull Request) 요청을 거치게 되면 이 브랜치로 병합된다.
+) 개발자는 feature 브랜치에서 소스코드 수정을 한 뒤 develop 브랜치로 PR 요청을 한다.
+) 새로운 기능을 위한 feature 브랜치는 develop 브랜치의 HEAD에서 생성한다.
3️⃣ feature branch
- 단위 기능을 개발하는 브랜치로 기능 개발이 완료되면 develop 브랜치로 머지된다.
- 새로운 기능 개발이나 버그 수정을 위한 일련의 코드 수정 또한 이루어진다.
- feature 브랜치에서 작업된 내용은 최종적으로 PR을 거쳐 develop 브랜치에 머지된다.
4️⃣ release branch
- git으로 관리되는 소프트웨어는 정기적으로 성능 개선, 기능 추가, 버그 수정을 반영하면서 릴리즈 된다.
- release 브랜치는 이 릴리즈를 하기 위한 목적으로 생성되는 브랜치이다.
- release 브랜치는 develop 브랜치를 기반으로 생성되며, 다음 릴리즈에 포함되어야 하는 기능셋과 버그 픽스들이 확정된 다음 생성된다.
- 릴리즈 브랜치가 생성된 다음 QA(품질 검사) 테스트가 릴리즈 브랜치를 기준으로 진행된다.
- 이 과정에서 발견된 버그 수정 사항들이 release 브랜치와 develop 브랜치에 적용되며, 그 밖에 메이저 기능들이 중간에 추가되진 않는다.
5️⃣ hotfix branch
- hotfix 브랜치는 정기적인 릴리즈 이외에 긴급하게 수행돼야 할 버그 수정을 반영하기 위해 생성되는 브랜치이다.
- 다음 릴리즈 프로세스를 기다릴 수 없을 정도로 긴급한 패치가 바로 반영되어야 하는 경우 이 브랜치를 사용한다.
+) hotfix 브랜치는 master 브랜치를 기반으로 생성된다.
+) 생성된 hotfix 브랜치에 긴급한 패치들이 반영되고 이후 master 브랜치에 병합되고 태그 생성이 된다.
+) 마찬가지로, 수정 사항은 develop 브랜치로도 병합되어 긴급 수정 사항이 이후 릴리즈에도 반영되게 한다.
📌 참고자료
Git-flow 설치😎
🤚🏻 잠깐! 모든 개발환경은 Mac 기준이다.
Git-flow
를 설치한 이후에는 간단한 명령어르르 이용해, Vincent Driessen의 브랜치 모델에서 필요한 브랜칭 동작들을 수행할 수 있다!
Git-flow
를 설치하기 위해서는 Git
이 먼저 설치되어 있어야 한다.(이미 설치되어 있으므로 패-쓰😉)
Mac의 경우 Homebrew
를 이용해 쉽게 설치할 수 있다!
brew install git-flow-avh
명령어를 이용해 Git-flow
를 설치한다.
.
.
.
설치 완료✌🏻
다음 시간에는 간단한 Git-flow
사용법에 대해 알아보도록 하겠다😎
화이팅~~~....!