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 μ λ΅μ ν΅μ¬
λΈλμΉ μ λ΅μ "μΈμ μ΄λ»κ² λ§λ€κ³ λ³ν©ν κ²μΈκ°?" λΌλ μ§λ¬Έμ λν κ·μΉμ
λλ€.
- μ΄λ€ λΈλμΉμμ κ°λ°μ μμν κ²μΈκ°?
- Hotfix(κΈ΄κΈ μμ )λ μ΄λμ μμ
ν κ²μΈκ°?
- μμ
μ΄ λλλ©΄ μ΄λλ‘ Merge ν κ²μΈκ°?
3. μ£Όμ Branch μ λ΅ λΉκ΅: Git Flow vs GitHub Flow
3.1. Git Flow μ λ΅
μ ν΅μ μ΄κ³ ꡬ쑰μ μΈ μ λ΅μΌλ‘, 5κ°μ§ μ’
λ₯μ λΈλμΉλ₯Ό μ¬μ©ν©λλ€.
- Branch ꡬ쑰:
- master(main): μ νμΌλ‘ μΆμλλ κΈ°μ€ λΈλμΉ (Production).
- develop: λ€μ μΆμ λ²μ μ κ°λ°νλ μ€μ¬ λΈλμΉ.
- feature:
developμμ λ°μμ κΈ°λ₯μ κ°λ°νκ³ λ€μ developμΌλ‘ λ³ν©.
- release:
developμμ μΆμ μ€λΉλ₯Ό μν΄ μμ± (QA, ν
μ€νΈ μ§ν).
- hotfix: μΆμ ν λ°μν λ²κ·Έλ₯Ό
masterμμ μ¦μ μμ .
- μ₯μ :
- λκ·λͺ¨ νλ‘μ νΈλ μ¬λ¬ νμ΄ νμ
ν λ μ ν©.
- λ²μ κ΄λ¦¬κ° λͺ
ννμ¬ μ¬λ¬ λ²μ μ μ νμ μ μ§λ³΄μνκΈ° μ’μ.
- λ¨μ :
- κ΅¬μ‘°κ° λ³΅μ‘νκ³ κ΄λ¦¬ν΄μΌ ν λΈλμΉκ° λ§μ.
- κ°λ° κΈ°λ₯μ΄ λ°°ν¬λκΈ°κΉμ§ λ¨κ³κ° λ§μ CI/CD(μ§μμ ν΅ν©/λ°°ν¬) νκ²½μ λΆμ ν©ν μ μμ.
3.2. GitHub Flow μ λ΅
Git Flowλ₯Ό λ¨μνν λ°©μμΌλ‘, Master(Main) λΈλμΉ μ€μ¬μ μ λ΅μ
λλ€.
- Branch ꡬ쑰:
- master: μΈμ λ λ°°ν¬ κ°λ₯ν μν. (μ격ν κ΄λ¦¬ νμ)
- 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)κ° μ΄ν΄νκΈ° μ½κ² μμ±.