Git Flow는 Vincent Driessen가 만든 Git Branch 관리 전략입니다.
Git Flow는 기능별로 Git을 관리하기 쉽고, 스크럼 프로세스에서 칸반보드와 같이 사용하기 매우 유용하고 CI/CD와도 통합하기 좋기 때문에 많은 회사들이 사용하고 있습니다.
GitFlow에서는 소프트웨어의 상태에 따라 브랜치를 분리하는 전략을 가지고 있습니다.
feature/{}
: 개발자가 특정 기능을 개발할 때 사용하는 브랜치입니다. feature/{칸반티켓이름}
형태로 브랜치를 만든 후, 티켓 기능을 구현합니다.develop
: 개발 브랜치입니다. feature 브랜치가 완료되면 develop에 머지됩니다.release
: 배포전에 머무는 브랜치입니다. release 브랜치의 코드를 바탕으로 QA팀에서 QA를 수행합니다.master(혹은 main)
: 실제 서비스로 런칭될 코드가 런칭되는 브랜치입니다. hotfix
: 긴급 패치가 필요할때 사용하는 브랜치입니다. hotfix에서 수정된 내용은 develop과 master에 동시에 머지됩니다. Gitflow 사용시 브랜치 생성은
master -> develop -> feature
순서로 생성됩니다. 코드 통합은 역으로
feature -> develop -> release -> master
진행이 되게 됩니다.
칸반보드의 각 티켓은 feature
브랜치로 변환 됩니다.
- 독릭적인 개발 환경
Gitflow 사용시 기능(티켓) 단위로 독립적인 Branch를 만들기 떄문에 다른사람의 개발 결과에 영향을 받지 않는 독립적인 개발환경을 만들어줍니다. 이는 최소한의 방해로 개발을 할 수 있게 도와줍니다.
- 쉬운 추적
Gitflow의 feature 브랜치는 칸반 보드의 티켓과 연동이 됩니다. 칸반 보드를 보고 어떤 기능이 통합되었는지 확인이 가능하며, 오류 발생시 어떤 기능을 개발하닥 문제가 생겼는지 확인하고 쉽게 UNDO
할 수 있습니다.
- 배포 정책 및 CI/CD 연동
Branch 별로 역할이 분리되어있기 때문에 각 Branch의 update에 맞춰 배포 & 테스트를 하기에 용이합니다.
예를 들어
CI/CD 관련 내용이 궁금하면 이전 포스팅을 확인해주세요
gitflow 사용시 Merge 스트레스를 최소화 하기 위해서는 develop
브랜치가 업데이트 될때 마다 자신의 feature
브랜치에 develop
브랜치를 머지해줍니다. 이렇게 하면 나중에 자신의 feature
브랜치를 develop에 머지할때 충돌 없이 머지할 수 있습니다.
Merge대신에 Rebase를 사용하면 한줄로된 이쁜 그래프를 볼 수 있습니다. git flow를 사용하면 필연적으로 브랜치가 굉장히 많아지고 복잡해 지기 때문에 추후 추적을 위해서 rebase를 사용하는 것이 관리에 유용합니다.
다만 merge에 비해서 충돌시 해결이 어렵기 때문에 git flow를 처음 적용하는 팀일 경우 merge로 먼저 시작해보는 것을 추천드립니다.
Merge
Rebase
자신이 현재 작성하고 있는 Branch에서 develop 브랜치로 rebase한다음에 develop 브랜치에 머지를 하게 되면 깔끔한 commit tree를 볼 수 있습니다.
카우치코딩에서는 1:1 코딩 문제해결 서비스입니다. 가르치는데 관심있는 멘토분들이나 문제해결이 필요한 멘티분들 방문해주세요~
또한 별도로 6주 포트폴리오 수업을 진행중에있습니다. 혼자 포트폴리오 준비를 하는데 어려움이 있으면 관심가져주세요~