Flow란?직역하여 흐름이라는 의미입니다. git+flow는 'git에서 제공하는 브랜칭 기능을 활용한 변경 이력 관리 전략'입니다.이 외에도 다음과 같은 전략이 있으므로 적용하고자 하는 팀 사이즈에 따라 아래 전략들도 고려해주세요.github flow: git flow보다 훨씬 단순한 전략gitlab flow: git보다는 단순하고 github flow보다는 복잡한 전략 Git Flow란?브랜치를 나누는 방법에 대한 분류 중 하나입니다.Git Flow의 특징은 브랜치를 5종류로 나뉩니다.main(master): 서비스을 직접 배포하는 역할을 하는 브랜치입니다.feature(기능): 각 기능 별 개발 브랜치입니다.develop(개발): feature에서 개발된 내용을 가지고 있는 브랜치입니다.relea..
정의
flow:흐름이라는 의미를 가지고 있다
즉 git flow는 git에서 제공하는 브랜치 기능을 활용한 변경 이력 관리 전략
브랜치 5가지로 나누기
main(master):
서비스를 직접 배포하는 역할을 하는 브랜치입니다.
feature(기능):
각 기능 별 개발 브랜치입니다.
develop(개발):
feature에서 개발된 내용을 가지고 있는 브랜치입니다.
release(배포):
배포를 하기 전 내용을 QA(품질 검사) 하기 위한 브랜치입니다.
hotfix(빨리 고치기):
main 브랜치로 배포를 하고 나서 버그가 생겼을 때 빨리 고치기 위한 브랜치입니다.
❗
큰틀은 저렇고 세부적으로는 팀마다 자유롭게 정하면 된다.
❗
현재 우리는 축약해서 크게 보면 각 이니셜/기능으로 브랜치를 파서 작업하고 dev로 merge하는 형식으로 하고있는데
이번 git flow를 적용해보면
작업 할 때(feature) :feat/{기능명_이름}으로 브랜치명을 적용 할 수 있겠다.
배포전 통합 테스트 할 때(release): release에서 작업 해서 테스트 완료되면
배포(main): main 브렌치에 머지해서 API문서 작업 및 배포를 실행하면 되겠다.
브랜치를 분류하는 이유
❗
협업중 수정된 코드의 충돌을 방지하기 위해
가정
만약 완독률 계산하는 로직이 박선규, 김주혁 둘다 필요해 같은 브랜치에서 같은 부분을
수정할 경우 충돌이 날 수 밖에 없다.
충돌 해결법
이 부분을 줄이기 위해 각자 하위 브랜치를 파서 각자의 코드를 작성한 후 한명이 먼저 상위 브랜치에 병합하고 다른 한명이 병합된 상위 브랜치에서 하위브랜치를 파서 코드를 작성하면 충돌이 나지 않을 수 있다.
우리 프로젝트 적용
하나 하나 기다리면 작업시간이 효율적이지 않으니
작업 시간을 효율적으로 관리하기 위해, 각자 상위 브랜치에서 하위 브랜치를 생성해 작업을 진행한다. 작업이 완료된 후, 상위 브랜치를 하위 브랜치에 먼저 병합하여 수정된 부분에서 발생할 수 있는 충돌을 해결한다. 이후 상위 브랜치에 병합함으로써, 상위 브랜치에서는 보다 안전하게 코드를 관리할 수 있다.
하나의 소스코드로 여러명의 개발자들이 협업을 하게 되면서 소스코드의 버전 관리 시스템의 중요성이 매우 높아졌다. 과거에는 SVN, CVS 같은 소프트웨어들도 많이 사용되었지만 최근에는 거의 git으로 통일되어 가는 듯 하다. (그럼에도 아직까지 파일 서버에서 소스코드를 업로드하는 원시적인 방법을 사용하는 프로젝트도 많다.) SVN과 CVS에 비해 git이 갖는 큰 장점은 효율적인 브랜치(Branch) 관리가 가능하다는 점이다. 소스코드의 일부분을 수정하기 위해 브랜치를 생성하고 작업한 다음 원래 소스코드에 손쉽게 수정사항을 병합(Merge)할 수 있다. Vincent Driessen의 브랜칭 모델 소스코드를 관리하는데 브랜치 기능을 적극적으로 사용할 수 있는게 git의 장점이라고 언급했다. 브랜치 기능도..
// wget 설치
choco install wget
//git flow 설치
wget -q -O - --no-check-certificate https://raw.github.com/petervanderdoes/gitflow-avh/develop/contrib/gitflow-installer.sh install stable | bash
//설치 확인
git flow version
.
git-flow init
git flow init
💡
프로덕션 릴리즈 브랜치 정하기 :배포용 브랜치
이거 원래 git
1. Git Flow 초기화
현재 dev 브랜치를 기본 브랜치로 사용하고 있는 상황에서, Git Flow를 초기화하고 나중에 main 브랜치를 생성하여 프로덕션 릴리스를 관리합니다.
Git Flow 초기화 명령어 실행
bash코드 복사
git flow init
초기화 과정에서 브랜치 설정
프로덕션 릴리스 브랜치를 나중에 main으로 사용할 예정이라면 다음과 같이 입력합니다:
Branch name for production releases: main
Branch name for "next release" development: dev
2. 기능 브랜치에서 작업
팀원들은 각자의 기능 브랜치를 생성하여 작업을 진행합니다:
git checkout dev
git flow feature start feature-branch-name
3. 기능 브랜치 병합
기능 브랜치에서 작업이 완료되면 dev 브랜치에 병합합니다:
git flow feature finish feature-branch-name
4. main 브랜치 생성 및 초기 커밋 병합
모든 기능이 dev 브랜치에 병합된 후, 프로덕션 릴리스를 위한 main 브랜치를 생성합니다:
git checkout dev
git checkout -b main
git push -u origin main
5. 릴리스 준비 및 병합
main 브랜치를 생성한 후, 릴리스 준비가 완료되면 dev 브랜치의 최신 변경 사항을 main 브랜치에 병합합니다:
git checkout main
git merge dev
6. 원격 저장소에 푸시
최종적으로 main 브랜치를 원격 저장소에 푸시합니다:
git push origin main
요약된 단계
Git Flow 초기화: git flow init 실행 및 설정
기능 브랜치 생성 및 작업: git flow feature start <feature-branch>
기능 브랜치 병합: git flow feature finish <feature-branch>
main 브랜치 생성: git checkout -b main
main 브랜치에 병합: git merge dev
원격 저장소에 푸시: git push origin main
이 과정을 통해 dev 브랜치를 사용하여 개발 작업을 진행하고, main 브랜치를 통해 프로덕션 릴리스를 관리할 수 있습니다.
💡
깃 플로우 단점:
feature 브랜치에서 dev브랜치로 병합을하면 feature는 자동으로 삭제가 된다.