IT

🏠 버전 관리와 Git 브랜치 μ „λž΅: 개발의 ν˜Όλž€μ„ μž μž¬μš°λŠ” λ§ˆμŠ€ν„° ν‚€ πŸ–₯

μ•ˆλ…•ν•˜μ„Έμš”! ν˜‘μ—… 개발의 ν•„μˆ˜ μš”μ†Œμ΄μž, ν”„λ‘œμ νŠΈμ˜ 생λͺ…쀄과도 같은 버전 관리와 κ·Έ 핡심 도ꡬ인 Git 브랜치 μ „λž΅μ— λŒ€ν•΄ 쉽고 깊이 있게 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


1. πŸ” 버전 관리 μ‹œμŠ€ν…œ(VCS)μ΄λž€ λ¬΄μ—‡μΈκ°€μš”?

버전 관리 μ‹œμŠ€ν…œ(Version Control System)은 μ‹œκ°„μ˜ 흐름에 따라 파일의 λ³€κ²½ 사항을 κΈ°λ‘ν•˜κ³  κ΄€λ¦¬ν•˜λŠ” λ„κ΅¬μž…λ‹ˆλ‹€.

  • 핡심 κ°œλ…:
    • 기둝: λˆ„κ°€, μ–Έμ œ, 무엇을 λ³€κ²½ν–ˆλŠ”μ§€ μƒμ„Ένžˆ κΈ°λ‘ν•©λ‹ˆλ‹€.
    • 좔적: νŠΉμ • μ‹œμ μ˜ μƒνƒœλ‘œ λ˜λŒμ•„κ°€κ±°λ‚˜, λ³€κ²½ 이λ ₯을 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
    • ν˜‘μ—…: μ—¬λŸ¬ κ°œλ°œμžκ°€ λ™μ‹œμ— 같은 ν”„λ‘œμ νŠΈλ₯Ό μž‘μ—…ν•  λ•Œ 좩돌 없이 효율적으둜 μ½”λ“œλ₯Ό 톡합할 수 있게 λ•μŠ΅λ‹ˆλ‹€.
  • Git의 λ“±μž₯:
    • Git은 ν˜„μž¬ κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” λΆ„μ‚° 버전 관리 μ‹œμŠ€ν…œ(DVCS)μž…λ‹ˆλ‹€.
    • λΆ„μ‚°: 각 개발자의 컴퓨터에 전체 μ €μž₯μ†Œμ˜ 볡사본(Full History)이 μ €μž₯λ˜μ–΄ μžˆμ–΄, 쀑앙 μ„œλ²„μ— λ¬Έμ œκ°€ 생겨도 μž‘μ—…μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

2. 🌳 Git의 꽃: 브랜치(Branch) κ°œλ… μ΄ν•΄ν•˜κΈ°

Gitμ—μ„œ λΈŒλžœμΉ˜λŠ” 독립적인 μž‘μ—… 곡간을 μ˜λ―Έν•©λ‹ˆλ‹€.

  • λ™μž‘ 원리:
    • μ½”λ“œλ₯Ό μˆ˜μ •ν•  λ•Œ, 원본(Main Line)에 직접 μž‘μ—…ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, μ›λ³ΈμœΌλ‘œλΆ€ν„° κ°€μ§€(Branch)λ₯Ό λ»—μ–΄ λ‚˜κ°€ λ³„λ„μ˜ κ³΅κ°„μ—μ„œ μž‘μ—…ν•©λ‹ˆλ‹€.
    • 이 κ°€μ§€λŠ” 원본에 영ν–₯을 μ£Όμ§€ μ•ŠμœΌλ―€λ‘œ 자유둭게 μ‹€ν—˜ν•˜κ³  μƒˆλ‘œμš΄ κΈ°λŠ₯을 κ°œλ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄, 이 κ°€μ§€λ₯Ό λ‹€μ‹œ 원본에 ν•©μΉ˜λŠ”(Merge) 과정을 κ±°μΉ©λ‹ˆλ‹€.
  • 브랜치의 μž₯점:
    • μ•ˆμ •μ„±: 핡심 μ½”λ“œ(ν”„λ‘œλ•μ…˜ μ½”λ“œ)λŠ” 항상 μ•ˆμ •μ μœΌλ‘œ μœ μ§€λ©λ‹ˆλ‹€.
    • 병렬 개발: μ—¬λŸ¬ κΈ°λŠ₯이 λ™μ‹œμ— 개발될 수 μžˆμ–΄ 개발 속도가 ν–₯μƒλ©λ‹ˆλ‹€.
    • μ‹€ν—˜: μƒˆλ‘œμš΄ κΈ°λŠ₯μ΄λ‚˜ 버그 μˆ˜μ •μ„ 메인 μ½”λ“œμ— 영ν–₯을 μ£Όμ§€ μ•Šκ³  μ•ˆμ „ν•˜κ²Œ μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

3. 🎯 핡심 브랜치 μ „λž΅: λ§ˆμ΄λ„ˆ 관점(Major Branch Strategy)

Git을 ν™œμš©ν•œ 브랜치 μ „λž΅μ€ λ‹€μ–‘ν•˜μ§€λ§Œ, κ°€μž₯ 널리 쓰이며 μ•ˆμ •μ μΈ Git-Flow와 κ·Έ 핡심 아이디어λ₯Ό μ°¨μš©ν•œ GitHub Flow의 λ§ˆμ΄λ„ˆ 관점을 깊이 있게 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€.

A. Git-Flow μ „λž΅ (κ°€μž₯ ꡬ쑰적이고 λ”₯ν•œ μ ‘κ·Ό)

Git-FlowλŠ” ν”„λ‘œμ νŠΈμ˜ λ³΅μž‘λ„κ°€ λ†’κ³ , μ—„κ²©ν•œ 릴리즈 관리가 ν•„μš”ν•  λ•Œ μ‚¬μš©λ˜λŠ” μ „λž΅μž…λ‹ˆλ‹€.

브랜치 μ΄λ¦„μ—­ν• νŠΉμ§•
master / main운영 ν™˜κ²½ (배포 μ½”λ“œ)κ°€μž₯ μ•ˆμ •μ μΈ 브랜치. μ΅œμ’… 릴리즈된 μ½”λ“œλ§Œ κ΄€λ¦¬ν•˜λ©°, 이 λΈŒλžœμΉ˜μ— 직접 μ»€λ°‹ν•˜λŠ” 것은 ❌ κΈˆμ§€μž…λ‹ˆλ‹€.
develop톡합 개발 ν™˜κ²½ (λ‹€μŒ 버전 μ€€λΉ„)λͺ¨λ“  개발 μž‘μ—…μ˜ 쀑심이 λ©λ‹ˆλ‹€. μƒˆλ‘œμš΄ κΈ°λŠ₯ λΈŒλžœμΉ˜λ“€μ€ 이 λΈŒλžœμΉ˜μ—μ„œ μ‹œμž‘ν•˜μ—¬ λ‹€μ‹œ 이 브랜치둜 ν†΅ν•©λ©λ‹ˆλ‹€.
feature/κΈ°λŠ₯ κ°œλ°œμƒˆλ‘œμš΄ κΈ°λŠ₯ ν•˜λ‚˜λ‹Ή ν•˜λ‚˜μ”© μƒμ„±λ˜λŠ” 브랜치. developμ—μ„œ μ‹œμž‘ν•˜μ—¬ 개발 μ™„λ£Œ ν›„ develop으둜 Merge λ©λ‹ˆλ‹€.
release/μΆœμ‹œ μ€€λΉ„develop λΈŒλžœμΉ˜κ°€ λ‹€μŒ 버전 μΆœμ‹œ μ€€λΉ„κ°€ 되면 μƒμ„±λ©λ‹ˆλ‹€. 버그 μˆ˜μ •, 버전 정보 μ—…λ°μ΄νŠΈ λ“± μ΅œμ’… μ•ˆμ •ν™” μž‘μ—…λ§Œ μ§„ν–‰λ©λ‹ˆλ‹€.
hotfix/κΈ΄κΈ‰ 버그 μˆ˜μ •master/main λΈŒλžœμΉ˜μ— μžˆλŠ” 운영 ν™˜κ²½μ˜ 버그λ₯Ό μ¦‰μ‹œ μˆ˜μ •ν•˜κΈ° μœ„ν•΄ μƒμ„±λ©λ‹ˆλ‹€. μˆ˜μ • ν›„ master/mainκ³Ό develop λͺ¨λ‘μ— λ°˜μ˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.
  • λ§ˆμ΄λ„ˆ κ΄€μ μ˜ μž‘λ™:
    1. κ°œλ°œμžλŠ” 항상 develop λΈŒλžœμΉ˜μ—μ„œ feature/μƒˆκΈ°λŠ₯ 브랜치λ₯Ό λ§Œλ“­λ‹ˆλ‹€.
    2. 개발이 λλ‚˜λ©΄ feature/μƒˆκΈ°λŠ₯을 λ‹€μ‹œ develop으둜 λ³‘ν•©ν•©λ‹ˆλ‹€.
    3. 주기적으둜 develop 브랜치의 μ½”λ“œλ₯Ό release/버전 브랜치둜 λΆ„κΈ°ν•˜μ—¬ μ΅œμ’… ν…ŒμŠ€νŠΈ 및 μ•ˆμ •ν™” μž‘μ—…μ„ κ±°μΉ©λ‹ˆλ‹€.
    4. release/버전이 μ•ˆμ •λ˜λ©΄, master/main λΈŒλžœμΉ˜μ™€ develop 브랜치 λͺ¨λ‘μ— λ³‘ν•©ν•˜μ—¬ λ‹€μŒ κ°œλ°œμ„ μ€€λΉ„ν•©λ‹ˆλ‹€.

B. GitHub Flow μ „λž΅ (κ°€μž₯ κ°„κ²°ν•˜κ³  μ‹ μ†ν•œ μ ‘κ·Ό)

GitHub FlowλŠ” 지속적인 배포(Continuous Deployment)κ°€ μ€‘μš”ν•˜κ³ , Git-Flow의 λ³΅μž‘ν•œ ꡬ쑰가 뢀담될 λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • 핡심 브랜치:
    • main/master: μœ μΌν•œ 항ꡬ. 이 λΈŒλžœμΉ˜λŠ” 항상 배포 κ°€λŠ₯(Deployable)ν•œ μƒνƒœμ—¬μ•Ό ν•©λ‹ˆλ‹€.
  • μž‘μ—… 방식:
    1. main λΈŒλžœμΉ˜μ—μ„œ feature/κΈ°λŠ₯λͺ… 브랜치λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.
    2. μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ Pull Request(PR)λ₯Ό μƒμ„±ν•˜μ—¬ νŒ€μ›λ“€μ—κ²Œ μ½”λ“œ 리뷰λ₯Ό μš”μ²­ν•©λ‹ˆλ‹€.
    3. 리뷰가 μ™„λ£Œλ˜κ³  승인되면, feature/κΈ°λŠ₯λͺ… 브랜치λ₯Ό main λΈŒλžœμΉ˜μ— μ¦‰μ‹œ λ³‘ν•©ν•˜κ³ , 병합 직후 운영 ν™˜κ²½μ— λ°°ν¬ν•©λ‹ˆλ‹€.
  • λ§ˆμ΄λ„ˆ κ΄€μ μ˜ μž‘λ™:
    • Git-Flow처럼 developμ΄λ‚˜ release λΈŒλžœμΉ˜κ°€ λ”°λ‘œ μ—†μŠ΅λ‹ˆλ‹€. λͺ¨λ“  μž‘μ—…μ΄ main을 μ€‘μ‹¬μœΌλ‘œ 이루어지며, PRκ³Ό μ½”λ“œ 리뷰가 μ—„κ²©ν•œ ν’ˆμ§ˆ 관리λ₯Ό λŒ€μ²΄ν•©λ‹ˆλ‹€. κΈ΄κΈ‰ μˆ˜μ •(Hotfix)도 일반 κΈ°λŠ₯ 개발처럼 mainμ—μ„œ 브랜치λ₯Ό λ”°μ„œ μˆ˜μ • ν›„ λ‹€μ‹œ main으둜 Merge λ©λ‹ˆλ‹€.

4. πŸ”‘ 브랜치 μ „λž΅μ˜ 성곡을 μœ„ν•œ 팁

  • λͺ…λͺ… κ·œμΉ™ (Naming Convention): 브랜치 이름은 κ·Έ λͺ©μ μ„ λͺ…ν™•νžˆ μ„€λͺ…ν•΄μ•Ό ν•©λ‹ˆλ‹€. (예: feature/user-login, bugfix/crash-on-checkout)
  • 컀밋 λ‹¨μœ„ (Atomic Commit): ν•˜λ‚˜μ˜ 컀밋은 ν•˜λ‚˜μ˜ 논리적인 λ³€κ²½ λ‹¨μœ„λ§Œ ν¬ν•¨ν•˜λ„λ‘ μž‘κ²Œ λ§Œλ“­λ‹ˆλ‹€.
  • μ½”λ“œ 리뷰 (Code Review): 병합(Merge) 전에 λ°˜λ“œμ‹œ νŒ€μ›μ˜ 리뷰λ₯Ό κ±°μΉ˜λ„λ‘ ν•˜μ—¬ ν’ˆμ§ˆμ„ ν™•λ³΄ν•©λ‹ˆλ‹€.
  • 배포 μžλ™ν™” (CI/CD): λΈŒλžœμΉ˜μ— 병합(특히 master/main)이 될 λ•Œ ν…ŒμŠ€νŠΈμ™€ 배포가 μžλ™μœΌλ‘œ 이루어지도둝 μ‹œμŠ€ν…œμ„ κ΅¬μΆ•ν•˜λ©΄ μ•ˆμ •μ„±μ΄ κ·ΉλŒ€ν™”λ©λ‹ˆλ‹€.

버전 관리와 브랜치 μ „λž΅μ€ λ‹¨μˆœν•œ 도ꡬ가 μ•„λ‹ˆλΌ, 효율적인 ν˜‘μ—… λ¬Έν™”λ₯Ό λ§Œλ“œλŠ” κΈ°λ°˜μž…λ‹ˆλ‹€. 이 κ°œλ…λ“€μ„ μˆ™μ§€ν•˜κ³  μ μš©ν•˜μ—¬ μ•ˆμ •μ μΈ 개발 ν™˜κ²½μ„ ꡬ좕해 λ³΄μ„Έμš”!

infodori1234

Recent Posts

πŸ–₯ NetBIOS over TCP IP NBT μ™„μ „ κ°€μ΄λ“œ

둜컬 λ„€νŠΈμ›Œν¬ ν™˜κ²½μ„ μ‘°κΈˆμ΄λΌλ„ 닀뀄본 μ‚¬λžŒμ΄λΌλ©΄ ν•œ λ²ˆμ―€μ€ λ§ˆμ£ΌμΉ˜λŠ” μ΅μˆ™ν•œ 단어가 μžˆμŠ΅λ‹ˆλ‹€. λ°”λ‘œ NetBIOS와 NBTμž…λ‹ˆλ‹€.…

2κ°œμ›” ago

🏠 JSON Schema: 데이터 μœ νš¨μ„± κ²€μ¦μ˜ ν‘œμ€€ 섀계도 πŸ–₯

μ•ˆλ…•ν•˜μ„Έμš”! ν˜„λŒ€ μ›Ή κ°œλ°œμ—μ„œ 데이터 κ΅ν™˜μ˜ 핡심인 JSON(JavaScript Object Notation)을 λ”μš± κ°•λ ₯ν•˜κ³  μ•ˆμ •μ μœΌλ‘œ λ§Œλ“€μ–΄μ£ΌλŠ” 도ꡬ,…

2κ°œμ›” ago

🏠 ECMAScript 3 ν˜Έν™˜μ„± μ™„μ „ 정리 κ°€μ΄λ“œ

❌ ECMAScript 3(E3)λž€ λ¬΄μ—‡μΌκΉŒ ECMAScript 3λŠ” 1999년에 κ³΅μ‹ν™”λœ μžλ°”μŠ€ν¬λ¦½νŠΈ ν‘œμ€€μ΄λ‹€. μ§€κΈˆ 보면 였래된 기술 κ°™μ§€λ§Œ,…

2κ°œμ›” ago

πŸ–₯ CoffeeScript μ™„μ „ κ°€μ΄λ“œ

CoffeeScriptλŠ” ν•œλ•Œ ν”„λ‘ νŠΈμ—”λ“œ 개발 μƒνƒœκ³„μ—μ„œ 맀우 인기 μžˆμ—ˆλ˜ μ–Έμ–΄μ˜€κ³ , μ§€κΈˆλ„ νŠΉμ • ν”„λ‘œμ νŠΈλ‚˜ λ ˆκ±°μ‹œ μ‹œμŠ€ν…œ, κ°„κ²°ν•œ…

2κ°œμ›” ago

🏠 λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak) μ‰½κ²Œ μ΄ν•΄ν•˜κΈ°: πŸ–₯ λ‚­λΉ„λ˜λŠ” μ»΄ν“¨ν„°μ˜ κΈ°μ–΅λ ₯ ❌

ν˜„λŒ€μ μΈ ν”„λ‘œκ·Έλž˜λ° ν™˜κ²½μ—μ„œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜(Memory Leak)λŠ” μ—¬μ „νžˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ„±λŠ₯ μ €ν•˜μ™€ μΆ©λŒμ„ μΌμœΌν‚€λŠ” μ£Όμš” 원인 쀑…

2κ°œμ›” ago

πŸ–₯️ λΈŒλΌμš°μ € λ Œλ”λ§ κ³Όμ • (CRP) : μ›ΉνŽ˜μ΄μ§€κ°€ λˆˆμ•žμ— λ‚˜νƒ€λ‚˜κΈ°κΉŒμ§€μ˜ λ§ˆλ²•

(Critical Rendering Path, 핡심 λ Œλ”λ§ 경둜 μ™„λ²½ 이해) μ›Ή λΈŒλΌμš°μ €μ— μ£Όμ†Œλ₯Ό μž…λ ₯ν•˜κ³  μ—”ν„°λ₯Ό λˆ„λ₯΄λŠ” μˆœκ°„,…

3κ°œμ›” ago