git - gitflow 활용해보기(ft.sourcetree)(1)

노준석·2022년 5월 16일
0

이번 글에서는 내가 팀 프로젝트를 진행하며 느꼈던 불편한 점들을 해결시켜줄만한 방법이 있길래 나중을 위해 남겨두도록 할 것이다.

우선 글을 작성하기에 앞서, git이 무엇인지 대충은 알고 있는 사람이 활용하기에 적절한 방식일 것 같다. add가 뭐고 커밋? 푸시? 아예 기초가 잡혀있지 않은 상태에서는 그닥 도움이 될 것 같지 않다.

물론 나도 git이 뭔지 정확하게 알고 있냐고 물으면 아니라고 할 수 밖에 없다.. 언젠가 시간이 난다면 git의 기초부터 게시글을 작성하지 않을까?

git-flow란?

우선 들어가기에 앞서, IT 업계에서 손가락 안에 드는 유명 기업에서는 이미 git-flow를 활용하고 있다고 한다.
사실 내가 작성하는 이 글을 읽는 것 보다, 우아한형제들 기술 블로그의 git-flow 실제 활용 글을 읽는 것이 도움이 훨씬 더 될 것이다. 나는 입문자의 시선에서 어떻게 활용하고, 어떻게 이해하는 것이 좋을지 작성을 할 것이다.

git-flow는 프로그램이 아니다!

결론부터 말하자면 git-flow는 우리가 흔히 생각하는 프로그램이 아니다.
우리가 git을 사용하면 수 많은 commit과 branch들을 마주치게 될 것이다. 작은 프로젝트라면 상관 없겠지만 수동으로 필요한 branch들을 새로 만들어서 나아가게 되면 내가 지금 어디에 있는거지... 하며 길을 잃을수도 있고, 갑자기 엉뚱한 에러가 나서 이전 커밋으로 돌아가야 하는데 그게 어딘지 몰라서 그냥 망할수도 있다.

그런 점에서 git-flow라는 확장 커스터마이징(?) git을 사용하게 되는 것이다. 우아한 형제들 기술 블로그에도 나와 있지만, 아래 그림이 git-flow을 설명하는 것 이상 보여준다고 생각한다.

간단하게 설명하자면 다음과 같다.

  1. master branch : 실제로 운용중인 배포 버전을 관리하는 브랜치다. 수 많은 브랜치 작업과 핫픽스, 릴리즈 테스트 이후 정말 시중에서 운용이 가능할 정도의 완벽한 프로그램이 들어있다고 생각하면 된다.
  1. Devlop branch : 실제 개발(development)이 이루어지고 있는 브랜치다. 이 곳에서 개발자들이 필요한 기능들이 생기면 feature 브랜치를 하나 만들고 기능을 구현하게 된다. 예를들어, 기능 A가 필요하다고 하면 개발자는 develope 브랜치에서 feature/A 라는 하위 브랜치를 만들어서 개발한 후, develope 브랜치에 merge하게 된다.
  1. feature : 앞서 다룬 develope 브랜치에서 뻗어져나오는 기능을 개발하는 브랜치다.
  1. release : 배포를 위해 master 브랜치로 보내기 전에 마지막 품질 검사, 테스트를 진행하는 브랜치다. 해당 제품을 릴리즈하기 전에 일련의 테스팅 과정을 거치고, 문제가 없는 완벽한 프로그램일 시에만 master 브랜치로 병합된다.
  1. hotfix : 기능 개발 이후 릴리즈를 통한 테스팅 후 정상적으로 배포를 했지만, 모종의 이유로 버그나 에러가 발생하는 경우 이용하게 되는 브랜치이다. 정말 급하게 배포판에서 수정을 해야 하기 때문에 develope와 feature 브랜치까지 내려가지 않고 수정을 하게 되는 것이다.

git-flow 흐름 이해하기

  1. master 브랜치에서 개발을 시작한다
  2. master로부터 develop 브랜치를 생성한다 (master -> develop)
  3. 개발을 진행하면서, 필요한 기능들이 생겨난다
  4. 필요한 기능 A,B,C가 있다고 하자. 여러 개발자들이 develop 브랜치에서 각각의 기능 이름에 맞는 feature 브랜치를 생성하게 된다(feature/A, feature/B, feature/C)
  5. 각각의 feature들을 개발 완료하면, develop 브랜치에 merge하고 해당 브랜치를 삭제한다
  6. 모든 기능이 완료된 develop 브랜치에서 release 브랜치를 생성한다(QA 및 테스팅 진행, bug fix)
  7. 모든 것이 완료되었다면 release 브랜치를 master 브랜치로 병합하고 태그를 생성하고(버전관리), 배포한다
  8. 배포를 했는데(현재 master 브랜치), 만약 예기치 못한 버그나 오류가 발생한 경우 hotfix 브랜치를 생성해서 해당 버그를 빠르게 잡아낸다

마무리

이번 글에서는 git-flow에 대한 대략적인 느낌을 알아볼 수 있었다. 하지만 실제로 개발 환경에 적용해 보고 안해보고 차이는 크기 때문에, 다음 글에서는 sourcetree를 활용해서 실제 개발을 하듯이 진행하며 공부해보자.

profile
생각만 하지 말고 일단 시작하고 보자

0개의 댓글