# [[Small Team Workflow]] ## πŸ“Œ Brief Summary μ†Œκ·œλͺ¨ νŒ€ μ›Œν¬ν”Œλ‘œμš°(Small Team Workflow)λŠ” 2~5λͺ… 규λͺ¨μ˜ 개발 νŒ€μ— μ ν•©ν•œ, 가볍고 병합 μΆ©λŒμ„ λ°©μ§€ν•˜λŠ” 버전 관리 μ „λž΅μž…λ‹ˆλ‹€ [1, 2]. λ³΅μž‘ν•˜κ³  무거운 Git Flow λŒ€μ‹  λ‹¨μˆœν•œ κΈ°λŠ₯ 브랜치(Feature-branch) μ›Œν¬ν”Œλ‘œμš°λ‚˜ 단기 브랜치λ₯Ό ν™œμš©ν•˜λŠ” 트렁크 기반(Trunk-based) κ°œλ°œμ„ 주둜 μ‚¬μš©ν•©λ‹ˆλ‹€ [2-5]. 'main' 브랜치의 μ•ˆμ •μ„±μ„ 항상 μœ μ§€ν•˜κ³ , 수λͺ…이 짧은 λΈŒλžœμΉ˜μ—μ„œ μž‘μ—…ν•˜λ©° ν’€ λ¦¬ν€˜μŠ€νŠΈ(PR)λ₯Ό ν†΅ν•œ λ™λ£Œ 리뷰λ₯Ό ν•„μˆ˜λ‘œ ν•˜λŠ” 것이 ν•΅μ‹¬μž…λ‹ˆλ‹€ [3, 6, 7]. ## πŸ“– Core Content * **μ „λž΅ 선택:** μ†Œκ·œλͺ¨ νŒ€μ—κ²ŒλŠ” ν”„λ‘œμ„ΈμŠ€ μ˜€λ²„ν—€λ“œκ°€ 큰 전체 Git Flowλ³΄λ‹€λŠ”, μ΅œμ†Œν•œμ˜ ꡬ쑰λ₯Ό μ œκ³΅ν•˜λ©΄μ„œλ„ κ°€λ²Όμš΄ 'λ‹¨μˆœ κΈ°λŠ₯ 브랜치 μ›Œν¬ν”Œλ‘œμš°' λ˜λŠ” '단기 κΈ°λŠ₯ 브랜치λ₯Ό λ™λ°˜ν•œ 트렁크 기반 μ›Œν¬ν”Œλ‘œμš°'κ°€ ꢌμž₯λ©λ‹ˆλ‹€ [2-5]. * **브랜치 및 넀이밍 κ·œμΉ™:** * `main` (λ˜λŠ” `master`) λΈŒλžœμΉ˜λŠ” 항상 배포 κ°€λŠ₯ν•˜κ³  μ•ˆμ •μ μΈ μƒνƒœλ₯Ό μœ μ§€ν•΄μ•Ό ν•˜λ©°, 직접 ν‘Έμ‹œ(direct push)λŠ” μ—„κ²©νžˆ κΈˆμ§€λ©λ‹ˆλ‹€ [2, 3, 6, 8, 9]. * 각 μž‘μ—…(Task)λ§ˆλ‹€ `main`μ—μ„œ 브랜치λ₯Ό μƒμ„±ν•˜λ©°, λΈŒλžœμΉ˜λŠ” 수λͺ…이 μ§§μ•„μ•Ό(short-lived) ν•©λ‹ˆλ‹€ [3, 6, 10]. * 브랜치 이름은 `feature/`, `bugfix/`, `chore/` λ“±μ˜ 접두사와 ν‹°μΌ“ ID(예: `feature/PROJ-123-user-auth`), 짧은 μ„€λͺ…을 κ²°ν•©ν•˜μ—¬ μΌκ΄€λ˜κ²Œ λͺ…λͺ…ν•©λ‹ˆλ‹€ [2, 6, 11-14]. * **컀밋 κ·œμΉ™ (Atomic Commits):** * λ³€κ²½ 사항은 ν•˜λ‚˜μ˜ 논리적인 λ‹¨μœ„(Atomic)둜 μž‘κ²Œ, 그리고 자주 μ»€λ°‹ν•˜μ—¬ 리뷰와 νžˆμŠ€ν† λ¦¬ 관리λ₯Ό λ‹¨μˆœν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€ [3, 7, 11, 12]. * 컀밋 λ©”μ‹œμ§€λŠ” '무엇'을 'μ™œ' λ³€κ²½ν–ˆλŠ”μ§€ λͺ…ν™•νžˆ μ„€λͺ…ν•΄μ•Ό ν•˜λ©°, `feat:`, `fix:`와 같은 μ»¨λ²€μ…˜μ„ λ”°λ₯΄λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€ [7, 12, 15]. * **ν’€ λ¦¬ν€˜μŠ€νŠΈ(PR) 및 병합 (Merge):** * μ•„μ£Ό μž‘μ€ 변경이라도 항상 PR을 ν†΅ν•΄μ„œλ§Œ 병합해야 ν•©λ‹ˆλ‹€ [11, 16]. * PR은 κ°€λŠ₯ν•œ μž‘κ²Œ μœ μ§€(예: 200쀄 미만 ꢌμž₯)ν•˜κ³  λ³€κ²½ 사항, λ³€κ²½ 이유, UI λ³€κ²½μ˜ 경우 μŠ€ν¬λ¦°μƒ· 등을 포함해야 ν•©λ‹ˆλ‹€ [8]. * 병합 μ „μ—λŠ” λ°˜λ“œμ‹œ λͺ¨λ“  ν…ŒμŠ€νŠΈ 및 CI 검사λ₯Ό 톡과해야 ν•˜λ©°, μ΅œμ†Œ 1λͺ… μ΄μƒμ˜ λ™λ£Œ 리뷰(Peer Review) μŠΉμΈμ„ λ°›μ•„μ•Ό ν•©λ‹ˆλ‹€ [7, 8, 11, 12, 16]. * **이λ ₯ 관리 및 좩돌 λ°©μ§€:** * 컀밋 νžˆμŠ€ν† λ¦¬λ₯Ό κΉ”λ”ν•˜κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ 'μŠ€μΏΌμ‹œ 병합(Squash Merge)'을 주둜 μ‚¬μš©ν•˜κ³ , 병합이 μ™„λ£Œλœ κΈ°λŠ₯ λΈŒλžœμΉ˜λŠ” μžλ™μœΌλ‘œ μ‚­μ œ(Auto-delete)λ˜λ„λ‘ μ„€μ •ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€ [7, 8, 11, 16]. * 맀일 μž‘μ—…μ„ μ‹œμž‘ν•˜κΈ° 전에 μ΅œμ‹  `main` 브랜치의 λ³€κ²½ 사항을 동기화(Pull/Rebase)ν•˜μ—¬ λŒ€κ·œλͺ¨ 병합 μΆ©λŒμ„ μ˜ˆλ°©ν•΄μ•Ό ν•©λ‹ˆλ‹€ [4, 7]. ## πŸ”— Knowledge Connections - **Related Topics:** [[Feature-branch workflow]], [[Trunk-based development]], [[Pull Request (PR)]], [[Git Flow]], [[Atomic Commits]] - **Projects/Contexts:** [[Agile Software Development in Small Teams]], [[React Project Git Governance]] - **Contradictions/Notes:** μ†Œκ·œλͺ¨ νŒ€ μ›Œν¬ν”Œλ‘œμš°μ˜ λͺ…μΉ­κ³Ό κ΄€λ ¨ν•΄ μΌλΆ€λŠ” "λ‹¨μˆœ κΈ°λŠ₯ 브랜치 μ›Œν¬ν”Œλ‘œμš°(Simple feature-branch workflow)"라고 λͺ…λͺ…ν•˜κ³  [2, 6, 10], λ‹€λ₯Έ μΌλΆ€λŠ” "단기 브랜치λ₯Ό λ™λ°˜ν•œ 트렁크 기반 μ›Œν¬ν”Œλ‘œμš°(Trunk-based workflow with short-lived feature branches)"라고 μΉ­ν•©λ‹ˆλ‹€ [3, 16]. ν•˜μ§€λ§Œ 보호된 main 브랜치 μ‚¬μš©, 수λͺ…이 짧은 브랜치 운영, PR 리뷰 ν•„μˆ˜λΌλŠ” μ‹€μ œ κ΅¬ν˜„ κ·œμΉ™μ€ λ™μΌν•©λ‹ˆλ‹€. 두 μ ‘κ·Ό λͺ¨λ‘ Git FlowλŠ” μ†Œκ·œλͺ¨ νŒ€μ΄ κ°λ‹Ήν•˜κΈ°μ— μ§€λ‚˜μΉ˜κ²Œ λ¬΄κ²λ‹€λŠ” 점(Overhead)에 λ™μ˜ν•©λ‹ˆλ‹€ [3-5]. --- *Last updated: 2026-04-26*