Git-Flow

GreenBeanΒ·2021λ…„ 8μ›” 3일
0
post-thumbnail

Git-Flow

Git-Flowλž€?

  • Git-FlowλŠ” λŒ€ν‘œμ μΈ 브랜칭(branching) μ „λž΅ 쀑 ν•˜λ‚˜
  • 2010λ…„ Vicent Driessenκ°€ Git μž‘μ—… μ ˆμ°¨μ— λŒ€ν•΄ μ†Œκ°œν•¨
  • Git-FlowλŠ” 브랜치λ₯Ό 크게 5κ°€μ§€λ‘œ λ‚˜λˆ„μ–΄ κ°œλ°œν•˜λŠ” μ „λž΅
    • Git Flow μ „λž΅μ—λŠ” master와 developμ΄λΌλŠ” 항상 μ‘΄μž¬ν•˜λŠ” 메인 브랜치(Main branch)κ°€ 있음
    • feature-*, hotfix-*, release-*λΌλŠ” ν•„μš”μ— 따라 μƒμ„±ν•˜λŠ” λΈŒλžœμΉ˜κ°€ 있음
    • 이후 improvement-*, bugfix-*λ“± ν”„λ‘œμ νŠΈμ— 따라 λ‹€μ–‘ν•œ 브랜치 λͺ¨λΈμ΄ μΆ”κ°€λ˜μ—ˆμŒ
  • κ°€μž₯ 쀑심이 λ˜λŠ” λΈŒλžœμΉ˜λŠ” master와 develop 브랜치이며, merge된 feature, release, hotfix λΈŒλžœμΉ˜λŠ” μ‚­μ œν•˜λ„λ‘ 함

  • 보톡 Git-flowλ₯Ό μ„€λͺ…ν•  λ•Œ κ°€μž₯ 많이 μ‚¬μš©λ˜λŠ” μ„€λͺ… 이미지
    • master λΈŒλžœμΉ˜μ—μ„œ μ‹œμž‘
    • λ™μΌν•œ 브랜치λ₯Ό develop에도 생성
    • κ°œλ°œμžλ“€μ€ 이 develop λΈŒλžœμΉ˜μ—μ„œ κ°œλ°œμ„ 진행
      • κ°œλ°œμ„ μ§„ν–‰ν•˜λ‹€κ°€ νšŒμ›κ°€μž…, μž₯λ°”κ΅¬λ‹ˆ λ“±μ˜ κΈ°λŠ₯ κ΅¬ν˜„μ΄ ν•„μš”ν•  경우 Aκ°œλ°œμžλŠ” develop λΈŒλžœμΉ˜μ—μ„œ feature 브랜치λ₯Ό ν•˜λ‚˜ μƒμ„±ν•΄μ„œ νšŒμ›κ°€μž… κΈ°λŠ₯을 κ΅¬ν˜„ν•˜κ³  Bκ°œλ°œμžλ„ develop λΈŒλžœμΉ˜μ—μ„œ feature 브랜치λ₯Ό ν•˜λ‚˜ μƒμ„±ν•΄μ„œ μž₯λ°”κ΅¬λ‹ˆ κΈ°λŠ₯을 κ΅¬ν˜„
    • μ™„λ£Œλœ feature λΈŒλžœμΉ˜λŠ” κ²€ν† λ₯Ό 거쳐 λ‹€μ‹œ develop λΈŒλžœμΉ˜μ— ν•©μΉ¨
    • λͺ¨λ“  κΈ°λŠ₯이 μ™„λ£Œλ˜λ©΄ develop 브랜치λ₯Ό release 브랜치둜 λ§Œλ“¬
    • QA(ν’ˆμ§ˆκ²€μ‚¬)λ₯Ό ν•˜λ©΄μ„œ 보완점을 λ³΄μ™„ν•˜κ³  버그λ₯Ό ν”½μŠ€
    • λͺ¨λ“  것이 μ™„λ£Œλ˜λ©΄ 이제 release 브랜치λ₯Ό master λΈŒλžœμΉ˜μ™€ develop 브랜치둜 보냄
    • master λΈŒλžœμΉ˜μ—μ„œ 버전 μΆ”κ°€λ₯Ό μœ„ν•΄ νƒœκ·Έλ₯Ό ν•˜λ‚˜ μƒμ„±ν•˜κ³  배포
    • 배포λ₯Ό ν–ˆλŠ”λ° 미처 λ°œκ²¬ν•˜μ§€ λͺ»ν•œ 버그가 μžˆμ„ 경우 hotfixes 브랜치λ₯Ό λ§Œλ“€μ–΄ κΈ΄κΈ‰ μˆ˜μ • ν›„ νƒœκ·Έλ₯Ό μƒμ„±ν•˜κ³  μˆ˜μ • 배포

메인 브랜치

  • 메인 λΈŒλžœμΉ˜λŠ” master λΈŒλžœμΉ˜μ™€ develop 브랜치 두 μ’…λ₯˜
  • master : 배포 κ°€λŠ₯ν•œ μƒνƒœλ§Œμ„ κ΄€λ¦¬ν•˜λŠ” 브랜치
  • develop : λ‹€μŒμ— 배포할 것을 κ°œλ°œν•˜λŠ” 브랜치
    • 즉 develop λΈŒλžœμΉ˜λŠ” 톡합 브랜치의 역할을 ν•˜λ©°, ν‰μ†Œμ—λŠ” 이 브랜치λ₯Ό 기반으둜 κ°œλ°œμ„ 진행

보쑰 브랜치

  • 보쑰 λΈŒλžœμΉ˜λŠ” ν”Όμ²˜ 브랜치(feature branch) λ˜λŠ” ν† ν”½ 브랜치(topic branch)λ₯Ό 말함
  • master λΈŒλžœμΉ˜μ—μ„œ develop 브랜치λ₯Ό λ§Œλ“€μ—ˆκ³ , develop λΈŒλžœμΉ˜μ—μ„œ λ‹€μ‹œ feature 브랜치λ₯Ό λ‚˜λˆ  μž‘μ—…μ„ ν•˜κ³  μžˆλŠ” 것을 그림을 톡해 μ•Œ 수 있음
  • ν”Όμ²˜ λ˜λŠ” ν† ν”½ λΈŒλžœμΉ˜λŠ” κΈ°λŠ₯을 κ°œλ°œν•˜λŠ” 브랜치
  • develop λΈŒλžœμΉ˜μ—λŠ” 기쑴에 잘 μž‘λ™ν•˜λŠ” κ°œλ°œμ½”λ“œκ°€ λ‹΄κ²¨μžˆμœΌλ©°, 보쑰 λΈŒλžœμΉ˜λŠ” μƒˆλ‘œ 변경될 κ°œλ°œμ½”λ“œλ₯Ό λΆ„λ¦¬ν•˜κ³  각각 λ³΄μ‘΄ν•˜λŠ” μ—­ν• 
    • 즉 보쑰 λΈŒλžœμΉ˜λŠ” κΈ°λŠ₯을 λ‹€ μ™„μ„±ν•  λ•ŒκΉŒμ§€ μœ μ§€ν•˜κ³ , λ‹€ μ™„μ„±λ˜λ©΄ develop 브랜치둜 merge ν•˜κ³  κ²°κ³Όκ°€ 쒋지 λͺ»ν•˜λ©΄ λ²„λ¦¬λŠ” λ°©ν–₯
    • 보쑰 λΈŒλžœμΉ˜λŠ” 보톡 개발자 μ €μž₯μ†Œμ—λ§Œ μžˆλŠ” 브랜치고, originμ—λŠ” pushν•˜μ§€ μ•ŠμŒ
    • feature 브랜치λ₯Ό μ‚¬μš©ν•œλ‹€λ©΄, feature/#이슈번호 와 같은 ν˜•νƒœλ‘œ 브랜치λ₯Ό 관리

릴리즈 브랜치 (release branch)

  • 릴리즈 λΈŒλžœμΉ˜λŠ” 배포λ₯Ό μœ„ν•œ μ΅œμ’…μ μΈ 버그 μˆ˜μ • λ“±μ˜ κ°œλ°œμ„ μˆ˜ν–‰ν•˜λŠ” 브랜치
  • develop λΈŒλžœμΉ˜μ— 버전에 ν¬ν•¨λ˜λŠ” κΈ°λŠ₯이 merge λ˜μ—ˆλ‹€λ©΄ QAλ₯Ό μœ„ν•΄ develop λΈŒλžœμΉ˜μ—μ„œλΆ€ν„° release 브랜치λ₯Ό 생성
  • 배포 κ°€λŠ₯ν•œ μƒνƒœκ°€ 되면 master 브랜치둜 λ³‘ν•©μ‹œν‚€κ³ , μΆœμ‹œλœ master λΈŒλžœμΉ˜μ— 버전 νƒœκ·Έ(ex, v1.0, v0.2)λ₯Ό μΆ”κ°€
  • release λΈŒλžœμΉ˜μ—μ„œ κΈ°λŠ₯을 μ κ²€ν•˜λ©° λ°œκ²¬ν•œ 버그 μˆ˜μ • 사항은 develop λΈŒλžœμΉ˜μ—λ„ μ μš©ν•΄μ€˜μ•Ό 함
  • κ·ΈλŸ¬λ―€λ‘œ 배포 μ™„λ£Œ ν›„ develop λΈŒλžœμΉ˜μ— λŒ€ν•΄μ„œλ„ merge μž‘μ—…μ„ μˆ˜ν–‰

ν•«ν”½μŠ€ 브랜치 (hotfix branch)

  • ν•«ν”½μŠ€ λΈŒλžœμΉ˜λŠ” λ°°ν¬ν•œ λ²„μ „μ—μ„œ κΈ΄κΈ‰ν•˜κ²Œ μˆ˜μ •ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ master λΈŒλžœμΉ˜μ—μ„œ λΆ„λ¦¬ν•˜λŠ” 브랜치
  • 버그λ₯Ό μž‘λŠ” μ‚¬λžŒμ΄ μΌν•˜λŠ” λ™μ•ˆμ—λ„ λ‹€λ₯Έ μ‚¬λžŒλ“€μ€ develop λΈŒλžœμΉ˜μ—μ„œ ν•˜λ˜ 일을 계속할 수 있음
  • 이 λ•Œ λ§Œλ“  hotfix λΈŒλžœμΉ˜μ—μ„œμ˜ λ³€κ²½ 사항은 develop λΈŒλžœμΉ˜μ—λ„ merge ν•˜μ—¬ λ¬Έμ œκ°€ λ˜λŠ” 뢀뢄을 μ²˜λ¦¬ν•΄μ€˜μ•Ό 함
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 λŒ“κΈ€