# [[Git Branching Strategies]] ## πŸ“Œ Brief Summary Git 브랜칭 μ „λž΅μ€ μ†Œν”„νŠΈμ›¨μ–΄ 개발 νŒ€μ΄ μ½”λ“œ λ³€κ²½ 사항을 효율적으둜 κ΄€λ¦¬ν•˜κ³  ν†΅ν•©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 체계적인 μ›Œν¬ν”Œλ‘œμš°μž…λ‹ˆλ‹€. 이 μ „λž΅μ€ 메인(main) μ½”λ“œλ² μ΄μŠ€μ˜ μ•ˆμ •μ„±μ„ λ³΄ν˜Έν•˜λ©΄μ„œ κΈ°λŠ₯ 개발, 버그 μˆ˜μ • 등을 격리된 ν™˜κ²½(브랜치)μ—μ„œ μˆ˜ν–‰ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€ [1-3]. νŒ€μ˜ 규λͺ¨μ™€ ν”„λ‘œμ νŠΈ μš”κ΅¬μ‚¬ν•­μ— 따라 Feature Branch Workflow, Trunk-Based Development, Git Flow λ“± λ‹€μ–‘ν•œ μ „λž΅μ„ 맞좀 μ μš©ν•˜μ—¬ μ½”λ“œ μΆ©λŒμ„ λ°©μ§€ν•˜κ³  ν˜‘μ—… νš¨μœ¨μ„ κ·ΉλŒ€ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [3, 4]. ## πŸ“– Core Content * **μ£Όμš” 브랜칭 μ „λž΅** * **Feature Branch Workflow (κΈ°λŠ₯ 브랜치 μ›Œν¬ν”Œλ‘œμš°)**: 2~5λͺ… 규λͺ¨μ˜ μ†Œκ·œλͺ¨ νŒ€μ—κ²Œ κ°€μž₯ 초보자 μΉœν™”μ μ΄κ³  ꢌμž₯λ˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€ [2, 4]. 메인(main) λΈŒλžœμΉ˜λŠ” 항상 μ•ˆμ •μ μ΄κ³  배포 κ°€λŠ₯ν•œ μƒνƒœλ‘œ μœ μ§€ν•˜λ©°, μƒˆλ‘œμš΄ μž‘μ—…μ΄ ν•„μš”ν•  λ•Œλ§ˆλ‹€ λ©”μΈμ—μ„œ λΆ„κΈ°λœ 짧은 수λͺ…μ˜ κΈ°λŠ₯ 브랜치λ₯Ό μƒμ„±ν•˜μ—¬ μž‘μ—…ν•©λ‹ˆλ‹€ [1, 2, 5]. * **Trunk-Based Development (트렁크 기반 개발)**: κ°•λ ₯ν•œ CI/CD ν™˜κ²½μ„ κ°–μΆ˜ μˆ™λ ¨λœ νŒ€μ— μ ν•©ν•˜λ©°, 짧은 수λͺ…μ˜ κΈ°λŠ₯ 브랜치λ₯Ό 톡해 μž‘κ³  μž¦μ€ 컀밋을 메인에 λ³‘ν•©ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€ [1, 4]. * **Git Flow & GitHub Flow**: Git FlowλŠ” 정기적인 λ¦΄λ¦¬μŠ€κ°€ ν•„μš”ν•œ λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ— μ ν•©ν•˜μ§€λ§Œ μ†Œκ·œλͺ¨ νŒ€μ΄ μ‚¬μš©ν•˜κΈ°μ—λŠ” λ„ˆλ¬΄ 무거울 수 μžˆμŠ΅λ‹ˆλ‹€ [4]. 반면 GitHub FlowλŠ” 메인 브랜치둜 직접 λ³‘ν•©ν•˜μ—¬ 배포λ₯Ό λ‹¨μˆœν™”ν•˜λŠ” μœ μ—°ν•œ μ „λž΅μž…λ‹ˆλ‹€ [6, 7]. * **핡심 κ·œμΉ™ 및 λͺ¨λ²” 사둀 (Best Practices)** * **브랜치 λͺ…λͺ… κ·œμΉ™**: 브랜치 이름은 μ„œμˆ μ μ΄κ³  짧게 μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€(예: `feature/user-auth`, `bugfix/login-error`) [8-10]. 이슈 트래컀의 ν‹°μΌ“ ID(예: `PROJ-123`)λ₯Ό ν¬ν•¨ν•˜λ©΄ μ½”λ“œ λ³€κ²½ 사항과 λΉ„μ¦ˆλ‹ˆμŠ€ μš”κ΅¬μ‚¬ν•­ κ°„μ˜ 좔적성을 크게 높일 수 μžˆμŠ΅λ‹ˆλ‹€ [11, 12]. * **컀밋 κ·œμΉ™ (Conventional Commits)**: 컀밋은 의미 μžˆλŠ” μž‘μ€ λ‹¨μœ„λ‘œ 자주 μˆ˜ν–‰ν•΄μ•Ό ν•©λ‹ˆλ‹€ [9, 13]. `feat`(μƒˆ κΈ°λŠ₯), `fix`(버그 μˆ˜μ •), `docs`(λ¬Έμ„œ), `refactor`(λ¦¬νŒ©ν† λ§), `chore`(μœ μ§€λ³΄μˆ˜) λ“±μ˜ μΌκ΄€λœ 접두사λ₯Ό μ‚¬μš©ν•˜μ—¬ μ»€λ°‹μ˜ λͺ©μ μ„ λͺ…ν™•νžˆ ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€ [14-16]. * **Pull Request (PR) 및 병합**: μž‘μ—…μ΄ μ™„λ£Œλ˜λ©΄ λ°˜λ“œμ‹œ PR을 μƒμ„±ν•˜μ—¬ μ΅œμ†Œ 1λͺ… μ΄μƒμ˜ λ™λ£Œ 리뷰와 CI/CD ν…ŒμŠ€νŠΈ 톡과λ₯Ό 거친 ν›„ 병합해야 ν•©λ‹ˆλ‹€ [11, 13, 17]. κΉ”λ”ν•œ 컀밋 νžˆμŠ€ν† λ¦¬λ₯Ό μœ μ§€ν•˜κΈ° μœ„ν•΄ 'Squash Merge(μŠ€μΏΌμ‹œ 병합)'λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μœΌλ©°, 병합이 μ™„λ£Œλœ κΈ°λŠ₯ λΈŒλžœμΉ˜λŠ” μ¦‰μ‹œ μ‚­μ œν•˜μ—¬ μ €μž₯μ†Œλ₯Ό 정리해야 ν•©λ‹ˆλ‹€ [11, 13, 18]. * **ν”Όν•΄μ•Ό ν•  μ•ˆν‹° νŒ¨ν„΄ (Anti-Patterns)** * λ³΄ν˜Έλ˜μ–΄μ•Ό ν•  메인(main) λΈŒλžœμΉ˜μ— 직접 μ½”λ“œλ₯Ό μ»€λ°‹ν•˜λŠ” ν–‰μœ„ [19, 20]. * 수λͺ…이 λ„ˆλ¬΄ κΈ΄ κΈ°λŠ₯ 브랜치λ₯Ό λ°©μΉ˜ν•˜μ—¬ κ±°λŒ€ν•œ 병합 좩돌(Merge Conflict)을 μœ λ°œν•˜λŠ” ν–‰μœ„ [21, 22]. * μ½”λ“œ 리뷰λ₯Ό κ±΄λ„ˆλ›°κ±°λ‚˜, CI ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜μ§€ λͺ»ν•œ κΉ¨μ§„ μ½”λ“œλ₯Ό λ³‘ν•©ν•˜λŠ” ν–‰μœ„ [20, 22]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Conventional Commits]], [[Pull Request Workflow]], [[CI/CD Pipeline]] - **Projects/Contexts:** [[Frontend Team Collaboration]], [[Small Team Development]] - **Contradictions/Notes:** λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ— 자주 μ“°μ΄λŠ” 'Git Flow' μ „λž΅μ€ 2~5λͺ… 규λͺ¨μ˜ μ†Œκ·œλͺ¨ νŒ€μ—κ²ŒλŠ” ν”„λ‘œμ„ΈμŠ€ μ˜€λ²„ν—€λ“œκ°€ μ»€μ„œ λΆ€μ ν•©ν•˜λ©°, λŒ€μ‹  더 κ°€λ²Όμš΄ 'Feature Branch Workflow'λ‚˜ 'Trunk-Based Development'λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ‹€λ¬΄μ μœΌλ‘œ 훨씬 ꢌμž₯λ©λ‹ˆλ‹€ [1, 4, 23]. --- *Last updated: 2026-04-26*