4-4. Git의 workflow: Feature Branch Workflow
1. Feature Branch Workflow 소개
Feature Branch Workflow는 Git을 활용한 협업 방식 중 하나로, 각 기능을 독립적인 branch에서 개발하고, 완료된 기능을 메인 브랜치(주로 main 또는 master)에 병합하는 방식입니다. 이 워크플로우는 여러 개발자가 동시에, 그리고 안전하게 기능을 개발할 수 있도록 설계되었습니다. 특히 대규모 프로젝트나 여러 기능이 동시에 개발되는 상황에서 효과적입니다.
1) 배경
과거에는 모든 개발자가 동일한 코드베이스에서 직접 작업하는 방식이 일반적이었습니다. 이러한 방식은 코드 충돌의 위험이 높고, 잦은 병합으로 인해 개발 속도가 저하되는 문제점을 가지고 있었습니다. Feature Branch Workflow는 이러한 문제점을 해결하기 위해 각 개발자가 독립적인 branch에서 기능을 개발하고, 기능 개발이 완료된 후 main 브랜치에 병합하는 방식으로, 개발 과정의 안정성과 효율성을 높입니다.
2) Feature Branch Workflow의 장점
- 격리된 개발 환경: 각 기능은 독립적인 브랜치에서 개발되므로, 다른 기능의 개발에 영향을 받지 않고 안전하게 작업할 수 있습니다.
- 코드 리뷰 용이성: 기능 브랜치를
main브랜치에 병합하기 전에 코드 리뷰를 통해 코드의 품질을 높일 수 있습니다. - 지속적인 통합: 작은 단위로 병합을 수행하므로, 통합 과정에서 발생하는 문제점을 빠르게 발견하고 해결할 수 있습니다.
- 유연한 릴리스 관리: 릴리스를 위해 특정 기능만 선택적으로 병합할 수 있어, 릴리스 주기를 유연하게 관리할 수 있습니다.
- 실험적인 기능 구현: 새로운 기능이나 실험적인 기능을 메인 브랜치에 영향을 주지 않고 구현하고 테스트할 수 있습니다.
2. Feature Branch Workflow의 핵심 원리
Feature Branch Workflow는 다음과 같은 단계를 따릅니다.
-
새로운 기능 브랜치 생성:
main브랜치에서 새로운 기능 개발을 시작하기 위해, 해당 기능을 위한 새로운 브랜치를 생성합니다. 브랜치 이름은 기능을 명확하게 나타내는 이름을 사용합니다 (예:feature/login-page,feature/user-profile). -
기능 개발: 생성된 기능 브랜치에서 기능을 개발합니다. 개발 과정에서 커밋을 자주 수행하여 변경 사항을 저장하고, 필요에 따라 다른 브랜치의 변경 사항을 병합(merge)하거나 리베이스(rebase)할 수 있습니다.
-
코드 리뷰: 기능 개발이 완료되면, 해당 브랜치를
main브랜치에 병합하기 전에 코드 리뷰를 요청합니다. 코드 리뷰는 동료 개발자가 수행하며, 코드의 품질, 스타일, 기능 구현의 적절성 등을 검토합니다. -
병합 (Merge): 코드 리뷰를 통해 문제가 없거나, 수정 사항이 반영되었다면, 해당 기능 브랜치를
main브랜치에 병합합니다. 병합 과정에서 충돌이 발생할 경우, 충돌을 해결하고 다시 병합을 시도합니다. -
배포:
main브랜치에 병합된 기능은 배포 준비를 거쳐 실제 서비스에 배포됩니다.

3. Feature Branch Workflow 실전 적용
1) 브랜치 생성 및 기능 개발
먼저, main 브랜치에서 새로운 기능을 위한 브랜치를 생성합니다.
git checkout main
git pull origin main # main 브랜치 최신 상태로 업데이트
git checkout -b feature/새로운-기능-이름
여기서 feature/새로운-기능-이름은 해당 기능에 대한 명확한 설명을 담은 브랜치 이름으로, feature/ 접두사를 사용하여 기능 브랜치임을 명시합니다.
그 다음, 생성된 기능 브랜치에서 기능을 개발하고, 변경 사항을 커밋합니다. 커밋 메시지는 변경 내용을 명확하게 설명해야 합니다.
# 기능 개발...
git add .
git commit -m "feat: 새로운 기능 구현"
2) 변경 사항 동기화
다른 개발자의 변경 사항이나 main 브랜치의 최신 변경 사항을 기능 브랜치에 통합하기 위해, main 브랜치를 기능 브랜치에 병합(merge)하거나, 기능 브랜치를 main 브랜치에 리베이스(rebase)할 수 있습니다.
- 병합(Merge):
main브랜치의 모든 변경 사항을 기능 브랜치에 병합합니다. 병합 커밋이 생성됩니다.bash git checkout feature/새로운-기능-이름 git merge main - 리베이스(Rebase): 기능 브랜치의 커밋들을
main브랜치의 최신 커밋 위에 쌓습니다. 병합 커밋이 생성되지 않아 히스토리가 깔끔해집니다. 리베이스는 공개된 브랜치에서는 사용하지 않는 것이 좋습니다.bash git checkout feature/새로운-기능-이름 git rebase main
3) 코드 리뷰 및 병합 요청
기능 개발이 완료되면, 변경 사항을 main 브랜치에 병합하기 위해 풀 리퀘스트(Pull Request)를 생성합니다. 풀 리퀘스트는 코드 리뷰를 요청하고, 변경 사항을 병합하기 위한 절차입니다.
- 풀 리퀘스트 생성: GitHub, GitLab 등 Git 호스팅 서비스에서 기능 브랜치와
main브랜치를 비교하여 풀 리퀘스트를 생성합니다. - 코드 리뷰: 풀 리퀘스트를 생성하면, 다른 개발자들이 코드 리뷰를 진행합니다. 코드의 품질, 스타일, 기능 구현의 적절성 등을 검토합니다.
- 수정 사항 반영: 코드 리뷰에서 지적된 사항을 수정하고, 다시 커밋하여 풀 리퀘스트에 반영합니다.
- 병합 (Merge): 코드 리뷰가 완료되고, 모든 수정 사항이 반영되면, 풀 리퀘스트를 통해 기능 브랜치를
main브랜치에 병합합니다.
git push origin feature/새로운-기능-이름 # 원격 저장소에 브랜치 푸시
4) 병합 후 정리
기능 브랜치가 main 브랜치에 병합된 후에는, 더 이상 필요하지 않은 기능 브랜치를 삭제하는 것이 좋습니다.
git checkout main
git pull origin main
git branch -d feature/새로운-기능-이름
git push origin --delete feature/새로운-기능-이름
4. Feature Branch Workflow의 활용 사례
Feature Branch Workflow는 다양한 개발 환경에서 활용될 수 있습니다.
1) 웹 애플리케이션 개발
새로운 UI 컴포넌트 추가, API 엔드포인트 구현, 데이터베이스 모델 변경 등 웹 애플리케이션의 다양한 기능 개발에 적용할 수 있습니다.
2) 모바일 애플리케이션 개발
새로운 화면 추가, 기능 개선, 버그 수정 등 모바일 애플리케이션의 기능 개발에 활용할 수 있습니다.
3) 오픈 소스 프로젝트
오픈 소스 프로젝트에서 기여자들이 각자의 기능을 개발하고, 코드 리뷰를 통해 품질을 검증한 후, 프로젝트에 기여하는 방식으로 활용됩니다.
5. 주의사항과 트러블슈팅
1) 충돌 해결
병합 과정에서 충돌이 발생할 수 있습니다. 충돌은 서로 다른 브랜치에서 동일한 파일의 동일한 부분을 수정한 경우에 발생합니다. 충돌이 발생하면, 충돌을 해결하고 다시 병합을 시도해야 합니다.
# 충돌 발생 시
git status
# 충돌된 파일 열어 수정
# 충돌 해결 후
git add .
git commit -m "fix: 충돌 해결"
git merge main # 다시 병합
2) 브랜치 관리
불필요한 브랜치는 삭제하여 브랜치 목록을 깔끔하게 유지합니다.
git branch -d 브랜치_이름 # 로컬 브랜치 삭제
git push origin --delete 브랜치_이름 # 원격 브랜치 삭제
3) 코드 리뷰
코드 리뷰는 코드의 품질을 높이는 중요한 과정입니다. 코드 리뷰를 성실하게 수행하고, 리뷰 결과를 적극적으로 반영해야 합니다.
4) 커밋 메시지
커밋 메시지는 변경 내용을 명확하게 설명해야 합니다. 의미 있는 커밋 메시지는 코드 히스토리를 이해하고, 문제 발생 시 원인을 파악하는 데 도움을 줍니다.
git commit -m "feat: 로그인 페이지 UI 구현" # 좋은 예시
git commit -m "수정" # 좋지 않은 예시
5) 잦은 병합 및 리베이스
main 브랜치의 변경 사항을 자주 병합하거나 리베이스하여 기능 브랜치를 최신 상태로 유지하는 것이 좋습니다. 이를 통해, 병합 과정에서 발생하는 충돌을 줄이고, 코드의 일관성을 유지할 수 있습니다.
6. Feature Branch Workflow의 확장
Feature Branch Workflow는 다양한 방식으로 확장하여 사용할 수 있습니다.
1) Continuous Integration (CI)
CI 시스템을 활용하여, 풀 리퀘스트가 생성될 때마다 자동으로 코드 빌드, 테스트, 코드 스타일 검사를 수행할 수 있습니다.
2) Continuous Delivery (CD)
CD를 통해, main 브랜치에 병합된 변경 사항을 자동으로 테스트 환경이나 프로덕션 환경에 배포할 수 있습니다.
3) Gitflow
Gitflow는 Feature Branch Workflow를 기반으로 하는 더 복잡한 워크플로우입니다. 릴리스 관리, 핫픽스, 버그 수정 등을 위한 추가적인 브랜치를 사용합니다. Gitflow는 대규모 프로젝트나 복잡한 릴리스 관리가 필요한 경우에 유용합니다.

7. 결론
Feature Branch Workflow는 Git을 효과적으로 사용하는 데 필수적인 워크플로우입니다. 이 워크플로우를 통해, 개발 생산성을 높이고, 코드 품질을 향상시키며, 협업을 원활하게 할 수 있습니다. Feature Branch Workflow를 숙달하면, Git을 활용한 팀 개발의 효율성을 극대화할 수 있습니다.
비슷한 글 추천
4-1. Git의 workflow: Gitflow 소개
Gitflow, GitHub Flow 등 대표적인 Git 워크플로우를 소개하고, 각 워크플로우의 장단점을 비교합니다.
3-1. Git의 stash: 변경 사항 임시 저장
stash 기능을 사용하여 변경 사항을 임시로 저장하고 다시 불러오는 방법을 익힙니다.
3-6. Git의 interactive rebase: 커밋 수정
interactive rebase를 사용하여 여러 커밋을 수정하고 정리하는 방법을 익힙니다.
4-3. Git의 workflow: Gitflow 실습
Gitflow 워크플로우를 실제 프로젝트에 적용하는 실습을 진행합니다.
Comments (0)
No comments yet. Be the first to comment!
Please to write a comment.