Simple&Natural

개인적인 Git branch 관리 방법 공유 - 1편 본문

Git&Github

개인적인 Git branch 관리 방법 공유 - 1편

Essense 2022. 10. 23. 15:10
728x90

협업을 하던 개인 프로젝트를 진행하던 소스코드의 형상관리 방법으로 가장 많이 쓰이는 것이 Git입니다.

단순히 소스코드를 기록하는 용도를 넘어서 효율적으로 관리할 수 있는 방법은 없을까요?

 

현재 널리 알려져 있는 방법과 제가 개인적으로 사용하고 있는 깃 형상관리 전략에 대해 공유하고자 합니다.

가장 널리 쓰이는 전략으로는 크게 다음과 같은 세 가지가 있습니다.

 

Git-flow
2010년에 Vincent Driessen이 처음 제안한 방법으로 형상관리 전략으로 가장 널리 알려져 있습니다.

  • master : 제품으로 출시될 수 있는 브랜치
  • develop : 다음 출시 버전을 개발하는 브랜치
  • feature : 기능을 개발하는 브랜치
  • release : 이번 출시 버전을 준비하는 브랜치
  • hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치

위 5개의 브랜치를 기준으로 조직마다 상황에 맞게 변형시켜 사용하는 것으로 보입니다. 

 

 

 

GitHub-Flow

이름에서도 알 수 있듯이 깃허브에서 공식적으로 제안한 관리 전략입니다.

Git-flow의 복잡한 방법을 단순화 시킨 방법이라고 하여 develop브랜치가 따로 존재하지 않습니다.

GitHub-flow 의 도식

 

 

이미지에서 알 수 있듯이 master를 기준으로 branch를 분기시키고 각각 커밋 후 master에 병합하는 방식입니다.

 

단, master는 언제든 배포 가능한 상태로 존재하여야 하고

Pull-Request를 통해 프로젝트 구성원들의 리뷰와 신중한 테스트를 거쳐 병합되어야 합니다.

 

 

GitLab-flow

GitHub-flow가 지나치게 간소화되어 이를 보완하기 위한 목적으로 GitLab에서 제안한 형상관리 방법입니다.

문서를 보면 Git-flow와 GitHub-flow의 중간 정도의 프로세스를 가지고 있는 것 같습니다.

GitLab-flow의 Production은 Git-flow의 master와 동일한 성격을 가집니다.

 

 

이처럼 다양한 형상관리 전략들이 나와있고 이를 조금씩 변형하여 각 조직에 맞게 활용하고 있는 것 같습니다.

각 방법에 대한 설명은 이미 많은 자료들이 존재하고 있으니 간략한 개념과 도식만 소개하고 개인적으로 활용하고 있는 방법에 대해서 공유하는 것에 초점을 맞춰 볼게요 :)

 

 

개인적인 관리 방법

결과적으로는 앞서 소개드렸던 세 가지 방법 모두 제가 사용하는 방법은 아닙니다.

GitHub-flow의 경우 코드 리뷰어가 없는 상황에서 저 혼자 관리하기에는 적절하지 않다는 생각이 들어 제외하였고,

 

GitLab-flow의 경우 무언가 이도저도 아닌 애매한 전략이라는 생각이 들기도 했고 master와 production이 헷갈리는 등 잘 모르고 익숙하지 않다고 느껴 제외했었습니다.

 

Git-flow의 경우 많은 회사에서 사용하는 방법이긴 하나, 소규모 프로젝트나 사내에서 혼자 형상관리를 하는 제 상황에서는 일정과 자원이 한정되어 있는 상황에서 형상관리 자체가 하나의 커다란 일이 되지 않을까 하는 걱정이 있었습니다.

 

결국 개인적으로 상황에 맞게 조금씩 변형하며 형상관리를 하고 있는데요.

 

신기하게도 불편했거나 문제가 생겼던 전략들을 하나씩 수정하며 코드를 관리하다보니 어느새 프로젝트가 Git-flow와 유사한 모습으로 관리되는 것을 볼 수가 있어 개인적으로 Git-flow 방법이 저에게 가장 잘 맞는 방법이었다는 생각이 들었습니다.

 

 

 

 

참고자료

1. https://techblog.woowahan.com/2553/

2. https://insight.infograb.net/blog/2020/11/26/version-control-best-practice/

3. https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow

4. https://docs.github.com/en/get-started/quickstart/github-flow

5. https://docs.gitlab.com/ee/topics/gitlab_flow.html

728x90