📌 브랜치란?
- 나뭇가지라는 뜻
- 동일한 소스코드를 기반으로 서로 다른 작업을 할 때 각자 다른 버전의 코드가 만들어진다.
이 때, 여러 개발자들이 동시에 다양한 작업을 할 수 있도록 만들어 주는 기능이 브랜치이다.
- 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있다.
- 브랜치를 만들어 작업하고 나중에 머지하는 방법을 권장한다.
◾ 브랜치를 쓰는 경우
- 특별한 기능을 추가하거나, 개발하지만 나중에 쓰일지 안 쓰일지 모르는 코드를 추가할 때.
즉, 메인코드와 분리하여 작업할 때 유용하게 사용되며, 이후 다른 브랜치와 병합하여 코드를 합칠 수도 있다.
◾ 마스터 브랜치란?
- 저장소를 처음 만들면 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
'스터디 > 테크톡' 카테고리의 다른 글
[테크 톡 - 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 |