πŸ‘¨‍πŸ’» kimtongting
article thumbnail

Branch 생성 방식과 넀이밍 κ·œμΉ™

클둠 코딩을 μ‹œμž‘ν•˜λ €λŠ”λ°, ν˜„μ—…μ—μ„œ ν•˜λŠ” κ²ƒμ²˜λŸΌ 브랜치λ₯Ό λ‚˜λˆ μ„œ ν•˜λ €λ‹ˆ 브랜치 이름에도 κ·œμΉ™μ΄ μžˆμ§€ μ•Šμ„κΉŒ μ‹Άμ–΄ 찾아보고 μž‘μ„±ν•©λ‹ˆλ‹€.

λ”λΆˆμ–΄, 브랜치 넀이밍을 μ•ŒκΈ°μ— μ•žμ„œ 브랜치 μ’…λ₯˜λŠ” μ–΄λ–€ 것이 μžˆλŠ”μ§€ λ¨Όμ € μ„€λͺ…ν•˜κ² μŠ΅λ‹ˆλ‹€.


Branch 의 μ’…λ₯˜

Main branch

쀑앙 μ €μž₯μ†Œμ—λŠ” 수λͺ…이 λ¬΄ν•œν•œ 두 가지 메인 λΈŒλžœμΉ˜κ°€ μžˆλ‹€.
λ°”λ‘œ, master λΈŒλžœμΉ˜μ™€ develop λΈŒλžœμΉ˜μ΄λ‹€.

1. master branch

μ œν’ˆμœΌλ‘œ μΆœμ‹œλ  수 μžˆλŠ” 브랜치

μ‚¬μš©μžμ—κ²Œ 배포 κ°€λŠ₯ν•œ μƒνƒœλ§Œμ„ κ΄€λ¦¬ν•œλ‹€. μ—¬κΈ°μ„œλŠ” 배포(release) 이λ ₯을 κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

즉, ν•¨λΆ€λ‘œ master λΈŒλžœμΉ˜μ— 병합(merge) ν•˜κ²Œ 되면 탕비싀에 끌렀갈 수 μžˆλ‹€. 항상 master λΈŒλžœμΉ˜μ—μ„œ μž‘μ—…ν•˜κ³  μžˆλŠ” 건 μ•„λ‹Œμ§€ ν™•μΈν•˜λŠ” μŠ΅κ΄€μ„ κ°€μ§€μž.

2. develop branch

λ‹€μŒ μΆœμ‹œ 버전을 κ°œλ°œν•˜λŠ” 브랜치

κΈ°λŠ₯ κ°œλ°œμ„ μœ„ν•œ λΈŒλžœμΉ˜λ“€μ„ λ³‘ν•©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€. 즉, λͺ¨λ“  κΈ°λŠ₯이 μΆ”κ°€λ˜κ³  버그가 μˆ˜μ •λ˜μ–΄ 배포 κ°€λŠ₯ν•œ μ•ˆμ •μ μΈ μƒνƒœλΌλ©΄ develop 브랜치λ₯Ό mater λΈŒλžœμΉ˜μ— merge(병합)ν•œλ‹€.
ν‰μ†Œμ—λŠ” 이 브랜치λ₯Ό 기반으둜 κ°œλ°œμ„ μ§„ν–‰ν•œλ‹€.

Supporting branches

μš°λ¦¬λŠ” μ•žμœΌλ‘œ λ‹€μ–‘ν•œ supporting 브랜치λ₯Ό μ‚¬μš©ν•˜μ—¬ νŒ€ ꡬ성원 간에 평행 κ°œλ°œμ„ ν•  수 있고, κΈ°λŠ₯을 μ‰½κ²Œ 좔적할 수 μžˆλ‹€. 또, μ—¬λŸ¬ 가지 λ¬Έμ œλ„ ν•΄κ²°ν•˜κΈ° μ‰¬μ›Œμ§„λ‹€. 이 supporting λΈŒλžœμΉ˜λ“€μ€ 메인 λΈŒλžœμΉ˜μ™€λŠ” 달리 κ²°κ΅­ 제거될 것이기 λ•Œλ¬Έμ— 항상 μ œν•œλœ 수λͺ…을 κ°–λŠ”λ‹€.

supporting λΈŒλžœμΉ˜λŠ” μ„Έ 가지가 μžˆλ‹€.

1. feature branch

κΈ°λŠ₯을 κ°œλ°œν•˜λŠ” 브랜치

feature λΈŒλžœμΉ˜λŠ” μƒˆλ‘œμš΄ κΈ°λŠ₯ 개발 및 버그 μˆ˜μ •μ΄ ν•„μš”ν•  λ•Œλ§ˆλ‹€ develop λΈŒλžœμΉ˜λ‘œλΆ€ν„° λΆ„κΈ°ν•œλ‹€. feature λΈŒλžœμΉ˜μ—μ„œμ˜ μž‘μ—…μ€ 기본적으둜 κ³΅μœ ν•  ν•„μš”κ°€ μ—†κΈ° λ•Œλ¬Έμ— μžμ‹ μ˜ 둜컬 μ €μž₯μ†Œμ—μ„œ κ΄€λ¦¬ν•œλ‹€.

개발이 μ™„λ£Œλ˜λ©΄ develop 브랜치둜 mergeν•˜μ—¬ λ‹€λ₯Έ μ‚¬λžŒλ“€κ³Ό κ³΅μœ ν•œλ‹€.

  1. develop λΈŒλžœμΉ˜μ—μ„œ μƒˆλ‘œμš΄ κΈ°λŠ₯에 λŒ€ν•œ feature 브랜치λ₯Ό λΆ„κΈ°ν•œλ‹€.
  2. μƒˆλ‘œμš΄ κΈ°λŠ₯에 λŒ€ν•œ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€.
  3. μž‘μ—…μ΄ λλ‚˜λ©΄ develop 브랜치둜 merge ν•œλ‹€.
  4. 더 이상 ν•„μš”ν•˜μ§€ μ•Šμ€ feature λΈŒλžœμΉ˜λŠ” μ‚­μ œν•œλ‹€. - λ§Žμ€ 쀄기(branch)λŠ” μž‘μ—…μ— ν˜Όλž€μ„ 쀄 수 μžˆλ‹€.
  5. μƒˆλ‘œμš΄ κΈ°λŠ₯에 λŒ€ν•œ feature 브랜치λ₯Ό 쀑앙 원격 μ €μž₯μ†Œμ— μ˜¬λ¦°λ‹€.
//develop λΈŒλžœμΉ˜μ—μ„œ 생성
$ git checkout -b feature/login develop

2. release branch

이번 μΆœμ‹œ 버전을 μ€€λΉ„ν•˜λŠ” 브랜치

배포λ₯Ό μœ„ν•œ μ „μš© 브랜치λ₯Ό μ‚¬μš©ν•¨μœΌλ‘œμ¨ ν•œ νŒ€μ΄ ν•΄λ‹Ή 배포λ₯Ό μ€€λΉ„ν•˜λŠ” λ™μ•ˆ λ‹€λ₯Έ νŒ€μ€ λ‹€μŒ 배포λ₯Ό μœ„ν•œ κΈ°λŠ₯ κ°œλ°œμ„ 계속할 수 μžˆλ‹€. 1νŒ€μ€ 1.2버전을 κ°œλ°œν•˜κ³ , 2νŒ€μ€ 1.3버전을 κ°œλ°œν•  수 μžˆλ‹€.

release λΈŒλžœμΉ˜λŠ” 배포λ₯Ό μœ„ν•œ μ΅œμ’…μ μΈ 버그 μˆ˜μ •, λ¬Έμ„œ μΆ”κ°€ λ“± 배포와 μ§μ ‘μ μœΌλ‘œ κ΄€λ ¨λœ μž‘μ—…μ„ μˆ˜ν–‰ν•œλ‹€. μ΄λŸ¬ν•œ μž‘μ—…λ“€ 이외에 release λΈŒλžœμΉ˜μ— μƒˆλ‘œμš΄ κΈ°λŠ₯을 μΆ”κ°€λ‘œ mergeν•˜μ§€ μ•ŠλŠ”λ‹€.

3. hotfix branch

μΆœμ‹œ λ²„μ „μ—μ„œ λ°œμƒν•œ 버그λ₯Ό μˆ˜μ •ν•˜λŠ” 브랜치

λ°°ν¬ν•œ 버전에 κΈ΄κΈ‰ν•˜κ²Œ μˆ˜μ •μ„ ν•΄μ•Ό ν•  ν•„μš”κ°€ μžˆμ„ 경우, master λΈŒλžœμΉ˜μ—μ„œ λΆ„κΈ°ν•˜λŠ” λΈŒλžœμΉ˜μ΄λ‹€. develop λΈŒλžœμΉ˜μ—μ„œ λ¬Έμ œκ°€ λ˜λŠ” 뢀뢄을 μˆ˜μ •ν•˜μ—¬ 배포 κ°€λŠ₯ν•œ 버전을 λ§Œλ“€κΈ°μ—λŠ” μ‹œκ°„λ„ 많이 μ†Œμš”λ˜κ³  μ•ˆμ •μ„±μ„ 보μž₯ν•˜κΈ°λ„ μ–΄λ €μš°λ―€λ‘œ λ°”λ‘œ 배포가 κ°€λŠ₯ν•œ master λΈŒλžœμΉ˜μ—μ„œ 직접 브랜치λ₯Ό λ§Œλ“€μ–΄ ν•„μš”ν•œ λΆ€λΆ„λ§Œ μˆ˜μ •ν•œ ν›„ λ‹€μ‹œ master λΈŒλžœμΉ˜μ— λ³‘ν•©ν•˜μ—¬ 이λ₯Ό λ°°ν¬ν•˜λŠ” 것이닀.

  1. λ°°ν¬ν•œ 버전에 κΈ΄κΈ‰ν•˜κ²Œ μˆ˜μ •ν•  λΆ€λΆ„ λ°œμƒ => masterλΈŒλžœμΉ˜μ—μ„œ hotfix브랜치 λΆ„κΈ°
  2. λ¬Έμ œκ°€ λ˜λŠ” λΆ€λΆ„ μˆ˜μ •ν›„, masterλΈŒλžœμΉ˜μ— mergeν•˜κ³  배포
  3. hotfix λΈŒλžœμΉ˜μ—μ„œμ˜ λ³€κ²½ 사항은 develop λΈŒλžœμΉ˜μ—λ„ mergeν•œλ‹€.

버그 μˆ˜μ •λ§Œμ„ μœ„ν•œ Hotfix 브랜치λ₯Ό λ”°λ‘œ λ§Œλ“€μ—ˆκΈ° λ•Œλ¬Έμ—, λ‹€μŒ 배포λ₯Ό μœ„ν•΄ κ°œλ°œν•˜λ˜ μž‘μ—… λ‚΄μš©μ— μ „ν˜€ 영ν–₯을 주지 μ•ŠλŠ”λ‹€. hotfixλŠ” masterλΈŒλžœμΉ˜μ—μ„œ λΆ„λ¦¬ν•œ μž„μ‹œ 브랜치라고 μƒκ°ν•˜λ©΄ λœλ‹€.

branch 넀이밍 κ·œμΉ™

μ–΄λ–€ λ°©μ‹μœΌλ‘œ 브랜치의 이름을 μ •ν•˜λŠ”μ§€ 브랜치 μ’…λ₯˜μ— 따라 μ‚΄νŽ΄λ³΄μž.

1) master branch, develop branch

master와 develop λΈŒλžœμΉ˜λŠ” 본래 이름 κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ μΌλ°˜μ μ΄λ‹€.

2) feature branch

  • μ–΄λ–€ 이름도 κ°€λŠ₯ν•˜λ‹€. 단, master, develop, release-..., hotfix-... κ°™μ€ 이름은 μ‚¬μš©ν•  수 μ—†λ‹€.
  • feature/κΈ°λŠ₯μš”μ•½ ν˜•μ‹μ„ μΆ”μ²œν•œλ‹€. ex) feature/login
  • feature/{issue-number}-{feature-name} μ΄μŠˆμΆ”적을 μ‚¬μš©ν•œλ‹€λ©΄ 이와 같은 ν˜•μ‹μ„ λ”°λ₯Έλ‹€.
    ex) feature/1-init-project, feature/2-build-gradle-script-write

3) release branch

  • release-RB_... λ˜λŠ” release-... λ˜λŠ” release/...같은 이름이 μΌλ°˜μ μ΄λ‹€.
  • release-... ν˜•μ‹μ„ μΆ”μ²œν•œλ‹€. ex) release-1.2

4) hotfix branch

  • hotfix-... ν˜•μ‹μ„ μΆ”μ²œν•œλ‹€. ex) hotfix-1.2.1

References

λ°˜μ‘ν˜•
profile

πŸ‘¨‍πŸ’» kimtongting

@kimtongting μž…λ‹ˆλ‹€

ν¬μŠ€νŒ…μ΄ μ’‹μ•˜λ‹€λ©΄ "μ’‹μ•„μš”β€οΈ" λ˜λŠ” "κ΅¬λ…πŸ‘πŸ»" ν•΄μ£Όμ„Έμš”!