πŸ“š 데이터 뢄석과 Python - Git 버전 관리와 Branch μ „λž΅

Geondong KimΒ·2026λ…„ 1μ›” 8일
post-thumbnail

1. 버전 κ΄€λ¦¬μ˜ ν•„μš”μ„± 및 Git의 νŠΉμ§•

1.1. 버전 관리(Version Control)λž€?

ν”„λ‘œκ·Έλž¨ μ†ŒμŠ€ μ½”λ“œλ‚˜ λ¬Έμ„œμ˜ μž‘μ—… 내역을 좔적, κ΄€λ¦¬ν•˜κ³  λ™λ£Œλ“€κ³Ό 효율적으둜 ν˜‘μ—…ν•˜κΈ° μœ„ν•œ λ„κ΅¬μž…λ‹ˆλ‹€.

  • μ£Όμš” κΈ°λŠ₯:
    • 버전 관리: κ³Όκ±° 버전 비ꡐ 및 볡ꡬ κ°€λŠ₯.
    • λΆ„κΈ° & 병합 (Branch & Merge): 독립적인 개발 ν›„ 메인 μ½”λ“œμ— ν•©μΉ  수 있음.
    • 좩돌 ν•΄κ²° (Conflict Resolution): λ™μ‹œ μˆ˜μ • μ‹œ ν•΄κ²° λ°©μ•ˆ μ œμ‹œ.
    • νžˆμŠ€ν† λ¦¬ & 둜그: λˆ„κ°€, μ–Έμ œ, 무엇을 μˆ˜μ •ν–ˆλŠ”μ§€ 기둝.

1.2. Git의 νŠΉμ§• (λΆ„μ‚° 버전 관리 μ‹œμŠ€ν…œ)

  • λΆ„μ‚°ν˜• ꡬ쑰: 쀑앙 μ„œλ²„(Centralized)에 μ˜μ‘΄ν•˜μ§€ μ•ŠμœΌλ©°, Single Failure Point(단일 μž₯애점)κ°€ μ—†μŠ΅λ‹ˆλ‹€.
  • μ˜€ν”„λΌμΈ μž‘μ—…: 인터넷이 μ—†λŠ” ν™˜κ²½μ—μ„œλ„ λ…λ¦½μ μœΌλ‘œ μž‘μ—…(Commit)이 κ°€λŠ₯ν•©λ‹ˆλ‹€.
  • λ³€κ²½ 좔적: Git은 파일의 '버전'이 μ•„λ‹Œ 'λ³€κ²½ 사항(Snapshot)'을 μΆ”μ ν•©λ‹ˆλ‹€.

1.3. Git μ €μž₯μ†Œ ꡬ쑰 및 흐름

  • Remote Repo: 원격 μ €μž₯μ†Œ (GitHub, GitLab λ“±)
  • Local Repo: λ‚΄ μ»΄ν“¨ν„°μ˜ μ €μž₯μ†Œ (Object Database)
  • Staging Area: μ»€λ°‹ν•˜κΈ° μ „ 변경사항을 μ€€λΉ„ν•˜λŠ” 곡간 (Index)
  • Working Directory: μ‹€μ œ μž‘μ—… 쀑인 νŒŒμΌλ“€μ΄ μžˆλŠ” 곡간

κΈ°λ³Έ 사이클: Edit β†’ Stage(add) β†’ Commit β†’ Push


2. Branch(브랜치) μ „λž΅

2.1. Branchλ₯Ό μ‚¬μš©ν•˜λŠ” 이유

μž‘μ„±ν•˜μ‹  λ…ΈνŠΈμ™€ κ°•μ˜ μžλ£Œμ— λ”°λ₯΄λ©΄, λΈŒλžœμΉ˜λŠ” 독립성과 μ•ˆμ •μ„±μ„ μœ„ν•΄ ν•„μˆ˜μ μž…λ‹ˆλ‹€.

  • κΈ°λŠ₯ 개발, 버그 μˆ˜μ •, ν…ŒμŠ€νŠΈλ₯Ό 메인 μ½”λ“œμ™€ λΆ„λ¦¬ν•˜μ—¬ λ…λ¦½μ μœΌλ‘œ μˆ˜ν–‰.
  • *μ•ˆμ •μ μΈ 배포 μ½”λ“œ(Master/Main)와 μ‹€ν—˜μ μΈ 개발 μ½”λ“œ**λ₯Ό 뢄리.
  • μ—¬λŸ¬ κ°œλ°œμžκ°€ λ™μ‹œμ— μ„œλ‘œ λ‹€λ₯Έ μž‘μ—…μ„ μ§„ν–‰ κ°€λŠ₯.

2.2. Branch μ „λž΅μ˜ 핡심

브랜치 μ „λž΅μ€ "μ–Έμ œ μ–΄λ–»κ²Œ λ§Œλ“€κ³  병합할 것인가?" λΌλŠ” μ§ˆλ¬Έμ— λŒ€ν•œ κ·œμΉ™μž…λ‹ˆλ‹€.

  1. μ–΄λ–€ λΈŒλžœμΉ˜μ—μ„œ κ°œλ°œμ„ μ‹œμž‘ν•  것인가?
  2. Hotfix(κΈ΄κΈ‰ μˆ˜μ •)λŠ” μ–΄λ””μ„œ μž‘μ—…ν•  것인가?
  3. μž‘μ—…μ΄ λλ‚˜λ©΄ μ–΄λ””λ‘œ Merge ν•  것인가?

3. μ£Όμš” Branch μ „λž΅ 비ꡐ: Git Flow vs GitHub Flow

3.1. Git Flow μ „λž΅

전톡적이고 ꡬ쑰적인 μ „λž΅μœΌλ‘œ, 5κ°€μ§€ μ’…λ₯˜μ˜ 브랜치λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

  • Branch ꡬ쑰:
    1. master(main): μ œν’ˆμœΌλ‘œ μΆœμ‹œλ˜λŠ” κΈ°μ€€ 브랜치 (Production).
    2. develop: λ‹€μŒ μΆœμ‹œ 버전을 κ°œλ°œν•˜λŠ” 쀑심 브랜치.
    3. feature: developμ—μ„œ λ”°μ™€μ„œ κΈ°λŠ₯을 κ°œλ°œν•˜κ³  λ‹€μ‹œ develop으둜 병합.
    4. release: developμ—μ„œ μΆœμ‹œ μ€€λΉ„λ₯Ό μœ„ν•΄ 생성 (QA, ν…ŒμŠ€νŠΈ μ§„ν–‰).
    5. hotfix: μΆœμ‹œ ν›„ λ°œμƒν•œ 버그λ₯Ό masterμ—μ„œ μ¦‰μ‹œ μˆ˜μ •.
  • μž₯점:
    • λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈλ‚˜ μ—¬λŸ¬ νŒ€μ΄ ν˜‘μ—…ν•  λ•Œ 적합.
    • 버전 관리가 λͺ…ν™•ν•˜μ—¬ μ—¬λŸ¬ λ²„μ „μ˜ μ œν’ˆμ„ μœ μ§€λ³΄μˆ˜ν•˜κΈ° μ’‹μŒ.
  • 단점:
    • ꡬ쑰가 λ³΅μž‘ν•˜κ³  관리해야 ν•  λΈŒλžœμΉ˜κ°€ 많음.
    • 개발 κΈ°λŠ₯이 λ°°ν¬λ˜κΈ°κΉŒμ§€ 단계가 λ§Žμ•„ CI/CD(지속적 톡합/배포) ν™˜κ²½μ— 뢀적합할 수 있음.

3.2. GitHub Flow μ „λž΅

Git Flowλ₯Ό λ‹¨μˆœν™”ν•œ λ°©μ‹μœΌλ‘œ, Master(Main) 브랜치 μ€‘μ‹¬μ˜ μ „λž΅μž…λ‹ˆλ‹€.

  • Branch ꡬ쑰:
    1. master: μ–Έμ œλ“  배포 κ°€λŠ₯ν•œ μƒνƒœ. (μ—„κ²©ν•œ 관리 ν•„μš”)
    2. feature: μƒˆλ‘œμš΄ κΈ°λŠ₯μ΄λ‚˜ 버그 μˆ˜μ •μ„ μœ„ν•΄ masterμ—μ„œ 생성.
  • 핡심 흐름:
    • masterμ—μ„œ 브랜치 생성 β†’ μž‘μ—… 및 컀밋 β†’ PR(Pull Request) 생성 β†’ μ½”λ“œ 리뷰 및 ν…ŒμŠ€νŠΈ β†’ master둜 Merge β†’ μ¦‰μ‹œ 배포
  • μž₯점:
    • ꡬ쑰가 λ‹¨μˆœν•˜κ³  μ΄ν•΄ν•˜κΈ° 쉬움.
    • Agile 개발 방식과 CI/CD ꡬ좕에 μ΅œμ ν™”λ¨.
  • 단점:
    • master에 λ³‘ν•©λ˜λ©΄ λ°”λ‘œ λ°°ν¬λ˜λ―€λ‘œ, 잘λͺ»λœ μ½”λ“œκ°€ 운영 ν™˜κ²½μ— λ‚˜κ°ˆ μœ„ν—˜ 쑴재 (μžλ™ν™” ν…ŒμŠ€νŠΈ ν•„μˆ˜).
    • μ—¬λŸ¬ 배포 버전을 λ™μ‹œμ— κ΄€λ¦¬ν•˜κΈ° 어렀움.

4. Git μ‚¬μš© Tip

ν˜‘μ—…μ„ μœ„ν•œ νŒμž…λ‹ˆλ‹€.

  • MergeλŠ” 자주 ν•œλ‹€: 좩돌(Conflict)을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•¨.
  • Atomic Commit: 컀밋은 μž‘κ²Œ, ν•˜λ‚˜μ˜ λͺ©μ μ— μ§‘μ€‘ν•΄μ„œ μž‘μ„± (κΈ°λŠ₯ 개발과 λ¦¬νŒ©ν† λ§μ„ μ„žμ§€ 말 것).
  • Commit Message: fix, update 같은 λͺ¨ν˜Έν•œ 단어 κΈˆμ§€. μž‘μ—… μ΄μœ μ™€ κΈ°λŒ€ 효과λ₯Ό μžμ„Ένžˆ 기술.
  • PR(Pull Request): 리뷰어(Reviewer)κ°€ μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ μž‘μ„±.

0개의 λŒ“κΈ€