Branch 전략이란 프로젝트 진행 시 효율적인 버전 관리를 위해 사용하는 일종의 워크플로우(work-flow)입니다.
프로젝트를 진행하며 기능 추가, 기능 테스트 등을 진행하게 됩니다. 이 때 예기치 못한 버그가 발생할 수 있습니다. 우리는 버그를 찾아 수정하고 최종적으로는 완성된 프로젝트를 배포하게 될 것입니다.
이렇게 프로젝트를 진행해 나갈 때에 목적에 맞는 브랜치 사용, 유지보수를 위한 브랜치 효율 관리, 롤백을 위한 전략 등 프로젝트를 효율적으로 관리하기 위해 고안된 것이 Branch 전략입니다.
효율적인 프로젝트 진행을 위해 사용하는 Branch 전략에는 대표적으로 어떤 것들이 있는지 알아보겠습니다.
Git-flow는 대표적인 branch 전략 중 하나로 대규모 프로젝트에서 사용할 때 큰 장점을 보입니다.
feature
, develop
, release
, main(master)
, hotfix
브랜치로 이루어진 전략입니다.
알잘딱깔센 Github 핵심 개념
feature
feature 브랜치는 develop 브랜치에서 생성되고 기능을 구현할 때 생성하는 기능 단위의 브랜치입니다. 생성한 브랜치에서 기능 구현을 완료하였을 경우 develop 브랜치로 기능을 더해 나갑니다. 일반적으로 feature/기능
과 같은 이름을 붙입니다.
feature/add
브랜치를 생성하고 아래와 같이 2개의 수를 더해주는 코드를 작성해봅시다. 이렇게 한 기능을 구현한 뒤, develop 브랜치에 기능을 더해 나갑니다. 예를 들면, 빼기나 곱하기, 나누기 등의 기능을 추가할 때마다 push 를 하는 거죠.
//calculator.js
function add(a,b){
return a+b;
}
develop
develop 브랜치는 feature 브랜치에서 구현된 기능이 모여 브랜치들의 기둥 역할을 하는 브랜치입니다. 일반적으로 develop
과 같은 이름을 붙입니다.
//calculator.js
function add(a,b){
return a+b;
}
function sub(a,b){
return a-b;
}
function mul(a,b){
return a*b;
}
function div(a,b){
return a/b;
}
협업을 진행하는 팀원들이 사칙연산의 각 기능들을 구현하고 develop 브랜치로 구현한 기능들을 더하면, 위의 코드처럼 합쳐집니다.
release
release 브랜치는 develop 브랜치에서 생성되며, 실제 배포 전 테스트를 하거나 버그 확인을 하기 위한 브랜치입니다. develop 브랜치에서 계획했던 기능의 구현이 완료되었을 때, 기능 테스트 및 버그 확인을 위해 생성합니다. 일반적으로 release-1
과 같은 이름을 붙입니다.
//calculator.js
function add(a,b){
if(typeof a !== "number" || typeof b !== "number"){
return "숫자만 입력해주세요."
}
return a+b;
}
function sub(a,b){...}
function mul(a,b){...}
function div(a,b){...}
위와 같이 사칙연산의 기능을 가진 서비스를 만들었습니다. release 브랜치에서 테스트하던 중 숫자를 입력하지 않았을 경우에도 계산기가 수행이 되는 버그를 확인하게 되었다고 가정해 봅시다. 이 경우, 기능을 수정한 후에 develop 브랜치로 merge 하고 다시 기존의 release 브랜치에서 배포 전 테스트 및 버그 확인을 진행합니다.
main(master) main 브랜치는 release 브랜치에서 생성되며 실제 배포되는 소스의 브랜치입니다.