Git λΈλμΉ μ΄ν΄μ κ΄λ¦¬: νμ μ ν΅μ¬, λΈλμΉλ‘ νλ‘μ νΈ ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκΈ° πΏ
Gitμ κ°μ₯ κ°λ ₯ν κΈ°λ₯ μ€ νλλ λ°λ‘ λΈλμΉ(branch) μ λλ€. λΈλμΉλ νλ‘μ νΈμ λ 립μ μΈ μμ 곡κ°μ μλ―Ένλ©°, μ½λμ μμ μ±μ μ μ§νλ©΄μλ μ¬λ¬ κΈ°λ₯μ λμμ κ°λ°ν μ μλλ‘ λμμ€λλ€ . μ΄λ² ν¬μ€ν μμλ λΈλμΉμ κ°λ κ³Ό νμμ±μ μ€λͺ νκ³ , Gitμμ λΈλμΉλ₯Ό μμ±, μ΄λ, λ³ν©νλ λ°©λ²μ μμλ³΄κ² μ΅λλ€.
1. λΈλμΉλ 무μμΈκ°?
λΈλμΉλ νλμ Git μ μ₯μ μμμ λ 립μ μΈ μμ κ³΅κ° μ μλ―Έν©λλ€. νλ‘μ νΈλ₯Ό μ§νν λ, λΈλμΉλ₯Ό λλμ΄ μμ νλ©΄ μ½λκ° μλ‘ μΆ©λνμ§ μκ³ κ΄λ¦¬ν μ μμ΅λλ€. μλ₯Ό λ€μ΄, κ°λ° μ€μΈ κΈ°λ₯μ μλ£νκΈ° μ μ, μ΄λ―Έ μλ£λ μ½λλ₯Ό λ€λ₯Έ μμ μ μ μ©ν μ μλ κ²μ΄ λΈλμΉμ μ₯μ μ λλ€.
μ λΈλμΉκ° νμνκ°?
λΈλμΉλ₯Ό μ¬μ©νλ©΄, λ€μκ³Ό κ°μ μ΄μ μ΄ μμ΅λλ€.
- λμμ μ¬λ¬ κΈ°λ₯ κ°λ° κ°λ₯ : κ° κΈ°λ₯μ λ³λμ λΈλμΉμμ μμ ν¨μΌλ‘μ¨ μλ‘ λ 립μ μΈ μμ μ μ§νν μ μμ΅λλ€.
- μ½λ μμ μ± λ³΄μ₯ : λ©μΈ λΈλμΉμλ μμ λ μ½λλ§ μ μ§νλ©΄μ, μλ‘μ΄ κΈ°λ₯μ΄λ λ²κ·Έ μμ μ λ³λ λΈλμΉμμ ν μ€νΈν μ μμ΅λλ€.
- λ³ν©μ ν΅ν νμ : κ° λΈλμΉλ₯Ό λ³ν©ν¨μΌλ‘μ¨ μ΅μ’ μ μΈ μ½λλ‘ ν΅ν©ν μ μμ΄ νμ μ λ§€μ° μ 리ν©λλ€.
2. git branchλ‘ λΈλμΉ μμ± λ° μμ νκΈ°
Gitμμλ
git branch
λͺ
λ Ήμ΄λ₯Ό ν΅ν΄ λΈλμΉλ₯Ό μμ±νκ³ μμ ν μ μμ΅λλ€. μ΄λ, μλ‘μ΄ κΈ°λ₯μ΄λ λ²κ·Έ μμ μ μν λΈλμΉλ₯Ό λ§λ€μ΄ μμ
μ λΆλ¦¬ν μ μμ΅λλ€.
λΈλμΉ μμ±νκΈ°
git branch <λΈλμΉλͺ
>
μ λͺ
λ Ήμ΄λ νμ¬ μμΉν λΈλμΉμ 볡μ¬λ³Έ μ μμ±νμ¬ μλ‘μ΄ λΈλμΉλ₯Ό λ§λλλ€. μλ₯Ό λ€μ΄
git branch feature-UI
λͺ
λ Ήμ΄λ₯Ό μ¬μ©νλ©΄ feature-UI λΌλ μ΄λ¦μ μ λΈλμΉκ° μμ±λ©λλ€.
λΈλμΉ μμ νκΈ°
μλ£λ μμ μ λ³ν©ν ν, λ μ΄μ νμνμ§ μμ λΈλμΉλ₯Ό μμ ν λλ λ€μ λͺ λ Ήμ΄λ₯Ό μ¬μ©ν©λλ€.
git branch -d <λΈλμΉλͺ
>
-d
μ΅μ μ μ¬μ©νμ¬ λ³ν©λ λΈλμΉλ§ μμ ν μ μμ΅λλ€. λ³ν©λμ§ μμ λΈλμΉλ₯Ό μμ νλ €λ©΄-D
μ΅μ μ μ¬μ©ν΄μΌ ν©λλ€.
λΈλμΉ λͺ λ Ήμ΄ μμ½
λͺ λ Ήμ΄ | μ€λͺ | μμ |
---|---|---|
git branch <λΈλμΉλͺ
>
|
μλ‘μ΄ λΈλμΉλ₯Ό μμ± |
git branch feature-UI
|
git branch -d <λΈλμΉλͺ
>
|
λ³ν©λ λΈλμΉλ₯Ό μμ |
git branch -d feature-UI
|
git branch -D <λΈλμΉλͺ
>
|
κ°μ λ‘ λΈλμΉλ₯Ό μμ |
git branch -D feature-UI
|
3.
git checkout
κ³Ό
git switch
λ‘ λΈλμΉ μ΄λνκΈ°
λΈλμΉλ₯Ό μμ±ν νμλ ν΄λΉ λΈλμΉλ‘ μ΄λνμ¬ μμ
μ μ§νν΄μΌ ν©λλ€. Gitμμλ
git checkout
λλ
git switch
λͺ
λ Ήμ΄λ‘ λΈλμΉλ₯Ό μ νν μ μμ΅λλ€.
git checkout
μΌλ‘ λΈλμΉ μ΄λνκΈ°
git checkout <λΈλμΉλͺ
>
μ λͺ
λ Ήμ΄λ μ§μ ν λΈλμΉλ‘ μ΄λνμ¬ ν΄λΉ λΈλμΉμ νμΌκ³Ό μνλ₯Ό λΆλ¬μ΅λλ€. μλ₯Ό λ€μ΄,
git checkout feature-UI
λ‘ μ΄λνλ©΄ feature-UI λΈλμΉμμ μμ
ν μ μμ΅λλ€.
Tip : μ΅κ·Ό Git λ²μ μμλ
git switch
λͺ
λ Ήμ΄λ₯Ό μ¬μ©νμ¬ λΈλμΉ μ΄λμ΄ κ°λ₯ν©λλ€. μ¬μ© λ°©λ²μ λμΌν©λλ€.
git switch <λΈλμΉλͺ
>
λΈλμΉ μμ±κ³Ό λμμ μ΄λνκΈ°
λΈλμΉλ₯Ό μμ±νλ©΄μ λ°λ‘ μ΄λνκ³ μΆλ€λ©΄
-b
μ΅μ
μ μ¬μ©ν μ μμ΅λλ€.
git checkout -b <λΈλμΉλͺ
>
μ λͺ λ Ήμ΄λ λΈλμΉλ₯Ό μμ±νκ³ , μλμΌλ‘ μμ±λ λΈλμΉλ‘ μ΄λμμΌ μ€λλ€.
4.
git merge
λ‘ λΈλμΉ λ³ν©νκΈ°
μμ
μ μλ£ν ν, λ€λ₯Έ λΈλμΉμ λ³κ²½ μ¬νμ ν΅ν©νλ €λ©΄
git merge
λͺ
λ Ήμ΄λ₯Ό μ¬μ©ν©λλ€. μ£Όλ‘ λ©μΈ λΈλμΉ(main) μ κ°λ°μ΄ μλ£λ λΈλμΉλ₯Ό λ³ν©νμ¬ μ΅μ’
μ½λλ₯Ό ꡬμ±ν©λλ€.
git merge
μ¬μ© μμ
- λ©μΈ λΈλμΉλ‘ μ΄λ : λ³ν©μ μ§ννλ €λ©΄ λ³ν©ν λμ λΈλμΉλ‘ μ΄λν΄μΌ ν©λλ€.
bash
git checkout main
- λ³ν© μ€ν : λ³ν©ν λΈλμΉλ₯Ό μ§μ νμ¬
git merge
λ₯Ό μ€νν©λλ€.
bash
git merge <λΈλμΉλͺ
>
μλ₯Ό λ€μ΄,
git merge feature-UI
λͺ
λ Ήμ΄λ₯Ό μ¬μ©νλ©΄ feature-UI λΈλμΉμ λ³κ²½ μ¬νμ΄ main λΈλμΉ μ λ³ν©λ©λλ€.
λ³ν© μΆ©λ ν΄κ²°νκΈ°
λ³ν© κ³Όμ μμ λμΌν νμΌμ΄ λ€λ₯Έ λΈλμΉμμ μμ λλ©΄ μΆ©λ(conflict) μ΄ λ°μν μ μμ΅λλ€. Gitμ μΆ©λ λ°μ μ μΆ©λ νμΌμ νμνλ©°, μ¬μ©μκ° μ§μ μΆ©λμ ν΄κ²°νλλ‘ ν©λλ€. μΆ©λμ ν΄κ²°ν ν λ€μκ³Ό κ°μ΄ λ³ν©μ μλ£ν μ μμ΅λλ€.
git add <νμΌλͺ
>
git commit -m "μΆ©λ ν΄κ²°"
μ΄λ‘μ¨ λ³ν© μΆ©λμ ν΄κ²°νκ³ λ³ν©μ μλ£ν μ μμ΅λλ€.
λΈλμΉ μ¬μ© νΈλ λ π
νμ¬ GitHubμ GitLab λ±μ νλ«νΌμμ λΈλμΉλ₯Ό νμ©ν νμ μ νμ€μΌλ‘ μ리 μ‘κ³ μμ΅λλ€. μ‘°μ¬μ λ°λ₯΄λ©΄ Git μ¬μ©μμ μ½ 80% μ΄μμ΄ λΈλμΉλ₯Ό μ¬μ©νμ¬ νλ‘μ νΈμ κΈ°λ₯λ³ λΆλ¦¬μ κ΄λ¦¬μ νμ©νκ³ μμ΅λλ€. νΉν, κΈ°λ₯λ³ λΈλμΉμ Pull Request(PR)λ₯Ό νμ©ν νμ λ°©μμ λ§μ κΈ°μ μμ μ μ©λκ³ μμ΅λλ€.
FAQ π€
Q1. λΈλμΉ μ΄λ¦μ μ΄λ€ κ·μΉμ λ°λ₯΄λ κ²μ΄ μ’λμ?
A1. λΈλμΉ μ΄λ¦μ μ΄ν΄νκΈ° μ½λλ‘ κΈ°λ₯μ΄λ λͺ©μ μ λ°μ ν μ΄λ¦μ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. μλ₯Ό λ€μ΄,
feature-UI
,
bugfix-login
κ³Ό κ°μ νμμΌλ‘ μ΄λ¦μ μ§μ΅λλ€.
Q2.
git checkout
κ³Ό
git switch
μ μ°¨μ΄λ 무μμΈκ°μ?
A2. κΈ°λ₯μ λμΌνμ§λ§,
git switch
λ λΈλμΉ μ΄λμ μν΄ μλ‘κ² μΆκ°λ λͺ
λ Ήμ΄ μ
λλ€. Gitμ μ§κ΄μ±μ λμ΄κΈ° μν΄ λμ
λμμ΅λλ€.
Q3. λ³ν© νμ κΈ°μ‘΄ λΈλμΉλ μμ ν΄λ λλμ?
A3. λ€, λ³ν©μ΄ μλ£λ λΈλμΉλ μμ ν΄λ 무방ν©λλ€. μμ
곡κ°μ΄ κΉλν΄μ§λ©°, Git μ΄λ ₯μλ κΈ°λ‘μ΄ λ¨κΈ° λλ¬Έμ μμ ν΄λ μμ ν©λλ€.
Q4. μΆ©λ ν΄κ²°μ΄ μ΄λ €μΈ λλ μ΄λ»κ² νλμ?
A4. Gitμ μΆ©λ μμΉλ₯Ό νμν΄μ£Όλ―λ‘, μΆ©λμ΄ λ°μν νμΌμ μ΄μ΄ μλμΌλ‘ μμ ν ν μ»€λ° νλ©΄ λ©λλ€. νμ μ, νμ
νμκ³Ό μμνμ¬ ν΄κ²°νμΈμ.
Q5. λͺ¨λ νμΌμ΄ μλ μΌλΆ νμΌλ§ λ³ν©ν μ μλμ?
A5.
git cherry-pick
μ ν΅ν΄ νΉμ 컀λ°λ§ μ ννμ¬ λ³ν©ν μ μμ΅λλ€. νμ§λ§ κΈ°λ³Έ λ³ν© λ°©μμμλ μ 체 νμΌμ λ³ν©νκ² λ©λλ€.
μ΄μ Gitμ λΈλμΉ κΈ°λ₯μ ν΅ν΄ νλ‘μ νΈλ₯Ό λ 체κ³μ μΌλ‘ κ΄λ¦¬ν΄λ³΄μΈμ! λΈλμΉλ₯Ό νμ©νλ©΄ νμ μ΄ λ ν¨μ¨μ μ΄κ³ μμ μ μΌλ‘ μ§νλ μ μμ΅λλ€.
λκΈ