[테크 톡 - 13주차] Git의 브랜치 전략

728x90

📌 브랜치란?

- 나뭇가지라는 뜻

- 동일한 소스코드를 기반으로 서로 다른 작업을 할 때 각자 다른 버전의 코드가 만들어진다. 
이 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있도록 만들어 주는 기능이 브랜치이다.

- 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있다.

- 브랜치를 만들어 작업하고 나중에 머지하는 방법을 권장한다.

 

◾ 브랜치를 쓰는 경우

- 특별한 기능을 추가하거나, 개발하지만 나중에 쓰일지 안 쓰일지 모르는 코드를 추가할 때.
  즉, 메인코드와 분리하여 작업할 때 유용하게 사용되며, 이후 다른 브랜치와 병합하여 코드를 합칠 수도 있다. 

 

◾ 마스터 브랜치란?

- 저장소를 처음 만들면 Git은 Master 라는 이름의 브랜치를 생성한다.
  저장소에 새 파일을 추가하거나 파일의 내용을 변경하여 그 내용을 커밋하는 것 모두 마스터 브랜치를 통해 처리 할 수 있다. 

 

📌 브랜치 전략

◾ gitflow

👉 브랜치 종류

- master : 기준이 되는 브랜치로 제품을 배포하는 브랜치

- develop : 개발 브랜치. 개발자들이 이 브랜치를 기준으로 작업한 기능들을 머지

- feature : 단위 기능을 개발하는 브랜치. 기능 개발이 완료되면 develop 브랜치에 머지

- release : 배포를 위해 master 브랜치로 보내기전에 품질검사를 하기 위한 브랜치

- hotfix : master 브랜치로 배포 후 버그 발생 하여 수정할 때 사용하는 브랜치

 

 

◾ github flow

- gitflow의 복잡성으로 인해 나온 브랜치 전략

- hotfix , feature 브랜치 구분을 하지 않으며 수시로 배포가 일어난다.

- 브랜치는 항상 master 브랜치에서 만든다.

- master 브랜치는 어떤 때든 배포가 가능하며, 항상 최신 상태여야한다.

- github flow 방식의 테스트는 브랜치를 push하고 Jenkins로 테스트를하며,
  merge 하기 전에 충분한 테스트를 진행 해야 한다. 

- 원격 브랜치로 수시로 push를 해야한다 (git flow와 상반되는 방식)

- 피드백이나 도움이 필요 할 때나 merge 준비가 완료 되었을 때에는 pull request를 생성한뒤 master 브랜치로 반영을 요구한다.

- master로 merge 및 push 되었을 때에는 즉시 자동 배포 되도록 설정 해 준다. ( github flow 의 핵심)

 

◾ gitlab flow

- gitlab 에서는 production 브랜치가 master 브랜치 역할을 한다.
  (최종적으로는 production 에서 master로 marge 해야 함)
  production 브랜치는 master 이상 권한만 push가 가능하며 오직 배포만을 담당한다. 

- developer 권한 사용자는 master 브랜치에서 신규 브랜치를 추가하여 사용하다가
  소스를 커밋 및 푸쉬를 하면 master 계정에게 merge 요청이 간다.

- master 권한 사용자가 developer 사용자와 함께 리뷰 진행 및 검토 후 master 브랜치로 marge

- 테스트가 필요하다면 master에서 production으로 merge 전 pre-production 에서 테스트 

👉 브랜치 종류

- Master

- production

- pre-production

 

 

◾ fork와 full Request 

- 규모가 있는 개발을 할 경우 for와 full Request를 활용하여 구현 한다.

- fork : 브랜치와 비슷하지만 프로젝트를 통째로 외부로 복사하여 개발

- 개발자가 각자의 fork를 이용하여 로컬/원격 저장소를 가지고 pull Request로 원 프로젝트 관리자에서 머지요청을 보내면 원 프로젝트 관리자가 코드를 보고 메일 원격 저장소로 기능을 더하는 식으로 개발을 한다. 

 

💌 Reference

- https://m.blog.naver.com/seek316/222344170901

- https://hudi.blog/git-branch-strategy/

- https://velog.io/@kw2577/Git-branch-%EC%A0%84%EB%9E%B5

728x90

'스터디 > 테크톡' 카테고리의 다른 글

[테크 톡 - 15주차] Enum  (0) 2023.09.13
[테크 톡 - 14주차] DTO와 VO  (0) 2023.09.13
[테크 톡 - 12주차] 단위테스트  (0) 2023.08.20
[테크 톡 - 11주차] Spring & Spring Boot  (0) 2023.08.10
[테크 톡 - 10주차] HTTPS  (0) 2023.08.10