개인 프로젝트를 시작하기 전에 다른 분들의 사이드 프로젝트를 참고하면서 git branch 전략
과 commit 전략
이라는 것을 알게 되었다. 비록 혼자 개발할 프로젝트이지만, 나중에 있을 협업에 적용하기 위해 알아보았다. git branch 공부를 하다가 궁금했던 CI/CD 개념과 Jenkins라는 툴이 CI/CD에 사용되는 툴이라는 것을 알게 되어 기뻤다. 의외의 발견이 더 반가운 법!👀✨
git, branch, merge
브랜치 전략, git-flow, github-flow, CI/CD
git
이란 개발에 필요한 소스코드의 버전을 관리하는 도구이다.
개발자들은 git을 사용해 각작 독자적으로 개발한 다음 최종 프로젝트에 병합하는 방식으로 협업한다.
git의 branch(브랜치)라고하는 개념을 사용함으로써 위와 같이 독립적으로 작업하고 병합할 수 있다.
branch
는 개발자들이 독립적으로 작업할 수 있도록 하는 개념이다.
각각의 브랜치는 다른 브랜치에 영향을 받지 않기 때문에, 개발자들이 여러 작업을 동시에 진행할 수 있도록 한다.
브랜치는 나중에 병합(merge)을 통해 독립적으로 개발한 내용을 프로젝트에 합칠 수 있다.
merge
는 독립적인 브랜치의 소스코드를 상위 브랜치에 합치는 것이다.
프로젝트가 최종적으로 배포되는 main(또는 master) 브랜치에 merge하거나 현재 브랜치의 상위 브랜치로 merge한다.
자신이 맡는 프로젝트의 성격 등에 따라 어떤 브랜치를 생성하고 어떻게 병합할 것인지에 대한 업무 흐름(work-flow)을 정해야 한다.
이러한 work-flow를 브랜치 전략
이라고 한다.
Git-Flow
, Github-Flow
, Gitlab-Flow
이렇게 크게 3가지의 브랜치 전략이 있다.
git-flow는 아래 5가지 종류의 브랜치를 사용한다.
- master : 제품으로 출시될 수 있는 브랜치
- develop : 다음 출시 버전을 개발하는 브랜치
- feature : 기능을 개발하는 브랜치
- release : 이번 출시 버전을 준비하는 브랜치
- hotfix : 출시 버전에서 발생한 버그를 수정 하는 브랜치
master
(현재 github에서는 main으로 명칭 변경) 브랜치와 develop
브랜치는 필수로 관리하고, 나머지 브랜치들은 필요에 의해서 유연하게 관리한다고 한다.
CI
(Continuous Integration)는 "지속적 통합"을 의미하는 단어로, 빌드/테스트 자동화 과정이라고 할 수 있다.
CD는 "지속적 배포(Delivery)"를 의미하는 단어로, 배포 자동화 과정이라고 할 수 있다.
대표적인 CI/CD 툴에는 Jenkins, Travis CI, Bamboo 등이 있다.
git-flow 차트 이미지
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
내용 출처 및 앞으로도 참고하면 좋은 블로그