GitHub 플로우
Git을 기반으로 하는 개발 작업 흐름 중 하나로, 효율적인 개발과 협업을 위한 전략을 제공합니다. GitHub 플로우는 주로 메인 브랜치와 피처 브랜치를 중심으로 작업을 진행합니다. 다음과 같은 카테고리로 GitHub 플로우와 관련 전략을 정리해 볼 수 있습니다.
전략
원칙
- 작은 변경 사항: 한 번에 하나의 기능 또는 버그 수정만을 위한 작업을 수행합니다.
- 자주 커밋: 작은 단위의 변경 사항을 자주 커밋하여 이력을 명확하게 관리합니다.
-> 코드의 이력을 명확하게 관리하고, 문제가 생겼을 시 빠르게 수정이 가능하다.
- 피드백 빠르게 반영: 커밋 후 바로 테스트를 통해 피드백을 받고, 필요한 경우 수정하여 다시 커밋합니다.
주요 브랜치
-
메인 브랜치(main): 프로덕션에 배포될 수 있는 안정적인 코드만을 관리합니다.
-> main 브랜치는 항상 프로덕션에 배포 가능한 상태를 유지합니다.
-> develop 브랜치는 다음 배포를 위한 최신 개발 코드를 관리합니다.
-
피처 브랜치(feature-branch): 개발 중인 기능이나 작업을 위한 브랜치입니다.
-> 새로운 기능 개발을 위한 브랜치입니다.
-> 각 피처는 별도의 브랜치를 가지며, 개발 완료 후 develop 브랜치로 병합합니다.
-
배포 브랜치(release-branch):
-> 다음 버전의 배포를 준비하는 브랜치입니다.
-> develop 브랜치에서 필요한 기능이 모두 통합되면 release 브랜치를 생성합니다.
작업 흐름
- 피처 브랜치 생성: 새로운 기능이나 작업을 시작하기 전에 피처 브랜치를 생성합니다.
css
git checkout -b feature/new-feature main
- 코드 작업 및 커밋: 피처 브랜치에서 코드를 작성하고, 작은 단위로 자주 커밋합니다.
- 커밋 메시지는 명확하고 이해하기 쉽게 작성합니다.
- 커밋 메시지는 "제목 - 본문 - 꼬리말" 형식으로 작성하는 것이 좋습니다.
ex)
sql
Copy code
Add new feature
- 상세 내용을 추가
- 관련 이슈 해결
Close #issue_number
sql
git add .
git commit -m "Add new feature"
- 코드 리뷰: 팀원들에게 코드 리뷰를 요청하여 피드백을 받습니다.
- 코드 리뷰 프로세스:
- 코드 리뷰는 모든 변경 사항에 대해 필수적으로 진행합니다.
- 팀원들은 코드의 품질과 성능을 평가하며, 문제점이나 개선점을 피드백합니다.
- 리뷰어 지정:
- 피처 브랜치에서 개발한 코드는 다른 팀원에게 리뷰를 요청합니다.
- 리뷰어는 해당 기능에 대한 전문성을 가진 팀원을 지정합니다.
- 피처 브랜치 병합: 리뷰를 마친 후 메인 브랜치로 피처 브랜치를 병합합니다.
css
git checkout main
git merge --no-ff feature/new-feature
git push origin main
- 배포: 메인 브랜치의 코드를 프로덕션 환경에 배포합니다.
- CI/CD 도입: 지속적인 통합과 배포(CI/CD)를 도입하여 자동화된 테스트와 배포를 수행합니다.
- GitHub Actions, Jenkins 등의 도구를 사용하여 자동화된 배포 파이프라인을 구축합니다.
문제 해결 전략
- 버그 트래킹 시스템 도입:
- GitHub Issues, Jira 등의 버그 트래킹 시스템을 도입하여 문제점을 체계적으로 관리합니다.
- 발생한 문제는 즉시 트래킹 시스템에 등록하고, 해결 후 develop 브랜치에 반영합니다.
- 문제 해결 프로세스:
- 문제가 발생하면 즉시 수정하여 피처 브랜치에 반영합니다.
수정 사항은 코드 리뷰를 거친 후 develop 브랜치에 병합합니다.
추가 전략
- 코드 리뷰: 모든 변경 사항은 팀원들의 코드 리뷰를 거쳐야 합니다.
- 지속적인 통합(CI): 자동화된 테스트와 빌드를 통해 코드의 품질을 유지합니다.
- 문제 해결: 버그나 이슈가 발생하면 즉시 수정하여 메인 브랜치에 반영합니다.
GitHub 플로우는 단순하면서도 유연한 개발 작업 흐름을 제공하여 팀원 간의 협업을 효율적으로 도와줍니다. 이러한 원칙과 전략을 잘 따르면서 개발을 진행하면 더욱 안정적이고 효율적인 코드를 만들 수 있습니다.
이미지 출처
참고
ChatGPT