2 minute read

💡 해당 내용은, 생활코딩 영상을 기반으로 작성하였습니다.
💡 Git Flow의 이미지 출처이자, 내용을 더 알아보시고 싶다면, A successful Git branching model 사이트를 확인하시면 됩니다.

Branch의 사용 용도

Git Flow model

feature

🔥 Master Branch

  • 처음에 바로 생기는 메인 Branch로서 제품으로 출시될 수 있는 Branch
  • 실제로 서버에 Release하는 순간에 Master Branch로 Release Branch의 내용을 Merge함
  • Git의 Tag기능을 이용해 해당 버전의 Release는 Master Branch의 해당 커밋임을 알 수 있도록 기록해둠
  • 사용자에게 제공되는 버전만을 모아놓은 Branch

🔥 Develop Branch

  • Master로부터 파생된 Develop Branch 에서 실질적인 개발을 이어나감
  • Feature Branch의 내용을 작업 후 Develop Branch에 병합함
  • 특정 기능에 속하지 않는, 버그 같은 것의 처리는 Develop에서 이어 나감

Feature Branch

  • 특정 기능을 개발해야 하는 경우에 별도의 Feature Branch를 생성해서 해당 브랜치에서 작업함

Release Branch

  • 작업을 마무리하고 사용자들에게 결과를 배포해야하는 시점(다운로드, 서버 반영)에 새롭게 Release Branch 생성
  • Release Branch 이후에 발생하는 버그 수정, 문서 업데이트 등의 작업은 해당 브랜치 안에서 작업함
  • 작업이 끝날 때 마다 Develop Branch에 Merge 해줌
  • Release Branch에서 사용자에게 제공하고 싶은 것은 Master Branch에 머지시키고, 개발을 이어나가야 하는 내용은 Develop Branch에 머지시킴

Hotfix Branch

  • 사용자에게 버전을 제공(Master Branch)했는데, 긴급하게 버그가 생겼을 경우에 버그 해결을 한 뒤 다시 Master에 Merge 시킴 —> 해당 내용은 Tag로 기록을 함
  • 버그 해결 후 개발을 이어나가야 하므로 Develop Branch로 병합시킴

Git Flow 실습

  1. Github 원격 레포지토리 생성 및 주소 Copy 해두기
  2. git init . : 깃 레포지토리 생성(초기화)
  3. git remote add origin Copy한주소 : 원격 저장소 등록(add)
  4. git remote -v : 연결된 원격저장소 리스트 확인하기
  5. vim f1.txt > git add f1.txt > git commit -am “master 1” : 파일 생성 후, 등록, 커밋
  6. git checkout -b develop : develop이라는 브랜치 생성후 체크아웃
  7. git log --decorate --all —graph --oneline : git log 확인 22f28ca (HEAD - develop, master) master

  8. 같은 과정 develop 브랜치로 반복 (커밋까지)
    a97870c (HEAD -) feature-some, develop) develop

  9. git checkout -b feature-some : Feature 브랜치 생성 및 체크아웃하고 반복 22f28ca (master) master

  10. git checkout develop > git merge feature-some : 개발 브랜치로 변경 후 기능 브랜치를 머지함
  11. git branch -d feature-some : 개발 브랜치 삭제
  12. git checkout -b ‘release-1.0’ : 릴리즈 하고 싶은 경우 1.0 버전의 릴리즈 브랜치 생성 및 체크아웃 & 반복
  13. git checkout master > git merge release-1.0 >git tag -a 1.0 -m “first release” master : release branch를 마스터에 반영(Merge)시킴, 그 후 릴리즈 표시를 위해 태깅함
  14. git checkout develop > git merge release-1.0 :릴리즈에서의 변경 사항을 개발 브랜치에도 머지시킴
  15. git checkout -b hot fix-some > vim f1.txt > git commit -am “hotfix 5” : Hot Fix 사항이 생겼을 때를 위한 hot fix 브랜치 작업 반복
  16. git checkout master > git merge hotfix-some > git tag -a 1.1 -m “hotfix some” master : hotfix 작업 사항 마스터에 반영
  17. 동일 작업 develop branch에도 반영 323d8e8 (tag 1 0, release-1 0) release-1 0

🔥 Important 🔥

  • 새로운 브랜치 생성 전에는 반드시 git pull해서 다른 사람의 변경 사항 확인
  • Feature 브랜치는 독립적으로 실행
  • Feature 브랜치는 Develop 브랜치 내용 모두 가져야함, Develop 브랜치는 Feature 충돌 X
  • Feature 브랜치 개발이 끝나면 Develop으로 이동해서 Feature 브랜치 내용을 Merge 시킴
  • Release 브랜치 변경사항은 Develop 브랜치로 바로 바로 반영시킴
  • Hotfix 브랜치도 바로 반영시킴
  • Master 브랜치는 높은 권한을 가진 사람이 엄격하게 통제해야함

Leave a comment