Git Workflow
여러 개발자들이 Git을 활용해 협업할 때
코드 변경을 효과적으로 관리하고 통합하는 방법이다.
다양한 Git 워크플로우가 있으며, 각 워크플로우는
프로젝트 성격과 팀의 협업 방식에 따라 사용될 수 있다.
기본형 워크플로우 (Basic Workflow)
기본형 워크플로우는 단일 브랜치로만 작업할 때 사용하는 방식으로,
개인 프로젝트나 작은 팀에서 자주 사용된다.
모든 작업이 main 또는 master 브랜치에서 이루어지며,
복잡한 브랜치 전략이 필요하지 않을 때 적합하다.
- git clone을 사용해 원격 저장소를 로컬에 복제한다.
- 로컬에서 파일을 수정하고 git add로 스테이징한 후, git commit으로 커밋한다.
- 변경 사항을 원격 저장소에 git push로 푸시한다.
이 방식은 단순하고 빠르지만,
여러 사람이 작업할 때 충돌이 발생할 가능성이 높아 대규모 팀에는 적합하지 않다.
Feature 브랜치 워크플로우 (Feature Branch Workflow)
작업 중인 기능이나 버그 수정마다 별도의 브랜치를 생성하여 작업을 진행하는 방식이다.
main 또는 master 브랜치에는 항상 배포 가능한 코드만 유지되도록 하고,
새로운 기능 개발이나 버그 수정은 개별 브랜치에서 작업 후 main 브랜치로 병합된다.
- 새로운 기능이나 수정 사항에 대해 git branch로 브랜치를 생성하고 git switch로 전환한다.
- 수정 및 커밋을 완료한 후 main 브랜치로 돌아가서, git merge로 병합한다.
- 병합이 완료되면 원격 저장소에 푸시한다.
이 워크플로우는 코드 안정성을 유지할 수 있고,
각 브랜치가 독립적이기 때문에 동시에 여러 기능을 개발할 수 있는 장점이 있다.
Flow 워크플로우 (Flow Workflow)
여러 개의 브랜치를 사용하여 명확한 구조로 프로젝트를 관리하는 방식이다.
main과 develop 브랜치가 기본 브랜치로 존재하며,
이외에도 feature, release, hotifx 등의 브랜치를 통해 역할에 따라 코드를 분리한다.
- main: 배포 가능한 최종 코드를 관리
- develop: 개발 중인 코드가 모임
- feature: 새로운 기능을 개발할 때 사용함
- release: 배포 준비가 완료된 코드를 관리
- hotfix: 긴급하게 수정해야 할 버그를 고칠 때 사용
- develop 브랜치에서 feature 브랜치를 생성해 새로운 기능을 개발한다.
- 기능이 완성되면 develop 브랜치로 병합한다.
- 배포 준비가 되면 release 브랜치를 생성하여 최종 테스트 후, main 브랜치로 병합한다.
- 긴급한 수정 사항은 hotfix 브랜치에서 수정 후, main과 develop 브랜치에 병합한다.
이 워크플로우는 복잡하지만 프로젝트가 체계적으로 관리되며,
개발과 배포 과정이 명확하게 구분되어 있다.
Forking 워크플로우 (Forking Workflow)
개발자가 프로젝트 저장소를 포크하여 별도의 복사본에서 작업한 후,
Pull Request를 통해 변경 사항을 반영하는 방식이다.
오픈 소스 프로젝트나 외부 협력자가 있는 프로젝트에서 주로 사용된다.
- 원격 저장소를 포크하여 개인 저장소로 복사한다.
- 포크한 저장소를 로컬에 클론한 후, 별도의 브랜치에서 작업을 수행한다.
- 작업이 완료되면 개인 저장소에 푸시하고, 원본 저장소에 PR을 생성한다.
- 관리자는 코드 리뷰 후 PR을 승인하고 병합한다.
이 워크플로우는 외부 기여자의 독립적인 작업과 코드 검토를 가능하게 하며,
권한 관리도 수월하다.
트렁크 기반 워크플로우 (Trunk-Based Workflow)
모든 개발자들이 짧고 빈번한 주기로 코드 변경을 메인 브랜치에 병합하는 방식이다.
이 방식에서는 별도의 feature나 develop 브랜치 없이,
대부분의 작업이 main 또는 trunk 브랜치에서 이루어진다.
대규모 프로젝트에서 CI/CD와 함께 사용되며, 빠른 배포가 가능해지는 장점이 있다.
- 작은 기능이나 버그 수정 작업을 메인 브랜치에서 직접 수행하거나,
아주 짧은 수명의 작은 브랜치에서 작업한 후 메인 브랜치에 바로 병합한다. - CI/CD 시스템을 통해 메인 브랜치에 병합될 때마다 자동으로 테스트 및 배포가 이루어진다.
- 메인 브랜치의 상태가 항상 배포 가능한 상태를 유지하도록 하고,
작은 변경 사항을 자주 병합함으로써 대규모 충돌을 방지한다.
모노레포 워크플로우 (Monorepo Workflow)
모노레포 워크플로우는 여러 개의 관련 프로젝트를 하나의 저장소에서 관리하는 방식이다.
각 프로젝트가 서로 상호작용할 경우 모노레포 방식으로 관리하면 일관성 있는 개발과 테스트가 가능하다.
Google, Facebook, Microsoft와 같은 대규모 회사들이 모노레포 방식을 사용해 관련 프로젝트를 단일 저장소에서 통합 관리한다.
- 단일 저장소에서 여러 프로젝트가 관리되며, 각 프로젝트는 별도의 디렉토리 구조로 분리된다.
- 공유 라이브러리나 설정을 각 프로젝트가 쉽게 재사용할 수 있도록 설정한다.
- CI/CD 자동화를 통해, 개별 프로젝트별 테스트와 배포 프로세스를 설정해 두면
변경된 프로젝트에만 영향이 가도록 관리할 수 있다.
'Git' 카테고리의 다른 글
Git 기초, Git Flow (1) | 2024.11.08 |
---|---|
GitLab 초기 설정 및 사용법 (2) | 2024.11.07 |