본문 바로가기

Dego Log

[Dego Log] Git Flow 경험 기록

Git Flow라는 개념을 들어보긴 했지만 직접 사용해본 경험은 없었고, 

학원에서 프로젝트 진행을 할 때에도 master 브랜치와 팀원들 각각의 개인 브랜치 정도만 만들어서 사용했었다.

개인 프로젝트는 master 브랜치로만 사용했기 때문에 더더욱..! 써볼 생각도 안 했던 것 같다..

 

회사에 입사한 첫날에 Git Flow라는 개념에 대해 간단하게 설명해주었고,

실제로 유지보수 작업을 진행 시 바로 적용해야 하는 업무를 주로 했기 때문에 hotfix 브랜치에서 작업을 했었다.

그러면 이후에는 사수 개발자분들이 직접 master 브랜치로 합쳐서 배포까지 진행을 해주었다.

 

hotfix 브랜치 작업은 간단했고 Git Flow에 대한 개념이 명확하지 않아도 처리할 수 있는 정도였다.

정말 아래 명령어들만 반복해서 사용했으며, 더더욱 간단한 건 commit도 VSCODE에서 Ctrl+Enter로 해결!

 

git checkout hotfix
git commit -m "WM-59[2022-05-08 23:43] Tistory Test......"
git push origin hotfix

 

이제 이다음에는 feature 브랜치를 사용하게 되었고 develop 브랜치에서 분기해야 했으며

브랜치 생성하면서 생성된 브랜치로 이동할 수 있는 명령어만 계속 반복해서 사용했던 것 같다.

 

다만, 해당 내용에 대해서 설명을 들을 때 만약에 develop 브랜치가 최신이 아닐 경우가 있을 수도 있다는

가정하에 가장 최신 버전으로 생성하기 위해서 -t를 사용하여 feature 브랜치를 생성해야 한다고 들었었다..!

그래도 여기까지 feature 브랜치 생성은 살짝 헷갈렸지만 물어가면서 생성하고 작업까진 완료했었다.

 

git chekout -b feature/[naming] develop
git checkout -t feature/[naming] // 확실하게 정리 안되서 추후 정리할 예정

 

 

이제는 작업한 브랜치에서 직접 합쳐서 최종 배포까지 진행을 해야 될 때가 되었기 때문에 정리 겸.. 작성 중이다.

 

 

우선 가장 유명한 Git Flow 이미지로 개념을 파악하자!

 

  • master : 제품을 배포하는 브랜치 즉, 해당 브랜치로 배포한다고 생각하면 된다.
  • hotfix : 배포 이후에 긴급하게 수정해야 할 때 해당 브랜치에서 작업 후 master 브랜치로 병합시킨다.
  • release : 배포 전 최종 라이브 테스트를 진행하는 브랜치로 사용한다.
  • develop : 해당 브랜치를 기준으로 개발하고 각자 작업한 기능(feature) 브랜치를 병합시킨다.
  • feature : 단위 기능으로 개발하기 위한 브랜치로 작업이 완료되면 develop 브랜치로 병합시킨다.

직접 그려보면서 생각했기 때문에 해당 브랜치들에 대한 개념과 흐름을 이제야 전부 파악하게 되었다.

다시 생각해보면 들어도 헷갈렸던 이유는 딱 한 가지.. 해당 브랜치들에 개념이 확실하지 않아서 순서의 흐름 파악이 부족했다..!

 

 

이제 가장 많이 사용하는 Hofix Branch & Feature Branch 흐름을 파악하자!

 

1. Hotfix Branch

해당 브랜치는 운영 중인 서비스라면 이미 생성되어 있는 브랜치이기 때문에 이동해서 작업하고 커밋 후 올려주고

hotfix는 긴급 개발 건이기 때문에 바로 master 브랜치와 병합시켜서 업데이트 해준 다음에 서버 배포까지 진행해야 한다.

 

// 해당 브랜치로 이동해서 작업완료 후 커밋한 다음에 푸쉬까지 진행
git checkout hotfix
git commit -m "....."
git push origin hotfix

// 작업한 hotfix 브랜치를 master 브랜치로 병합
git remote update // 우선 최신화(선택적)
git pull origin master
git checkout master
git merge hotfix
git push origin master

 

2. Feature Branch

해당 브랜치는 단위 개발 브랜치로 develop 브랜치에서 분기시켜서 생성하여 작업이 완료되면,

develop 브랜치로 병합시키고 release 브랜치로 가서 Live Test 진행 후 문제가 없다면 release 브랜치도 병합시킨다.

최종적으로 master 브랜치까지 병합을 시켜서 배포를 진행하되 해당 브랜치는 삭제해줘야 한다.

 

// feature 브랜치 생성 후 해당 브랜치에서 작업 끝나면 커밋 후 푸쉬 진행
git checkout -b feature/test develop
git commit -m "..."
git push origin feature/test

// feature 브랜치에서 develop 브랜치로 병합
git pull feature/test
git pull origin develop
git checkout develop
git merge featur/test
git push origin develop

// develop 브랜치에서 release 브랜치로 병합
git pull origin develop
git pull origin release
git checkout release
git merge develop
git push origin release

// release 브랜치에서 master 브랜치로 병합
git pull release
git pull origin master
git checkout master
git merge release
git push origin master

 

 

여기까지 정리를 했지만 정말 기본 중의 기본이기 때문에 이 정도라도 잘하자..!