Branch μμ± λ°©μκ³Ό λ€μ΄λ° κ·μΉ
ν΄λ‘ μ½λ©μ μμνλ €λλ°, νμ μμ νλ κ²μ²λΌ λΈλμΉλ₯Ό λλ μ νλ €λ λΈλμΉ μ΄λ¦μλ κ·μΉμ΄ μμ§ μμκΉ μΆμ΄ μ°Ύμλ³΄κ³ μμ±ν©λλ€.
λλΆμ΄, λΈλμΉ λ€μ΄λ°μ μκΈ°μ μμ λΈλμΉ μ’ λ₯λ μ΄λ€ κ²μ΄ μλμ§ λ¨Όμ μ€λͺ νκ² μ΅λλ€.
Branch μ μ’ λ₯
Main branch
μ€μ μ μ₯μμλ μλͺ
μ΄ λ¬΄νν λ κ°μ§ λ©μΈ λΈλμΉκ° μλ€.
λ°λ‘, master λΈλμΉμ develop λΈλμΉμ΄λ€.
1. master branch
μ νμΌλ‘ μΆμλ μ μλ λΈλμΉ
μ¬μ©μμκ² λ°°ν¬ κ°λ₯ν μνλ§μ κ΄λ¦¬νλ€. μ¬κΈ°μλ λ°°ν¬(release) μ΄λ ₯μ κ΄λ¦¬νκΈ° μν΄ μ¬μ©νλ€.
μ¦, ν¨λΆλ‘ master λΈλμΉμ λ³ν©(merge) νκ² λλ©΄ νλΉμ€μ λλ €κ° μ μλ€. νμ master λΈλμΉμμ μμ νκ³ μλ 건 μλμ§ νμΈνλ μ΅κ΄μ κ°μ§μ.
2. develop branch
λ€μ μΆμ λ²μ μ κ°λ°νλ λΈλμΉ
κΈ°λ₯ κ°λ°μ μν λΈλμΉλ€μ λ³ν©νκΈ° μν΄ μ¬μ©νλ€. μ¦, λͺ¨λ κΈ°λ₯μ΄ μΆκ°λκ³ λ²κ·Έκ° μμ λμ΄ λ°°ν¬ κ°λ₯ν μμ μ μΈ μνλΌλ©΄ develop λΈλμΉλ₯Ό mater λΈλμΉμ merge(λ³ν©)νλ€.
νμμλ μ΄ λΈλμΉλ₯Ό κΈ°λ°μΌλ‘ κ°λ°μ μ§ννλ€.
Supporting branches
μ°λ¦¬λ μμΌλ‘ λ€μν supporting λΈλμΉλ₯Ό μ¬μ©νμ¬ ν ꡬμ±μ κ°μ νν κ°λ°μ ν μ μκ³ , κΈ°λ₯μ μ½κ² μΆμ ν μ μλ€. λ, μ¬λ¬ κ°μ§ λ¬Έμ λ ν΄κ²°νκΈ° μ¬μμ§λ€. μ΄ supporting λΈλμΉλ€μ λ©μΈ λΈλμΉμλ λ¬λ¦¬ κ²°κ΅ μ κ±°λ κ²μ΄κΈ° λλ¬Έμ νμ μ νλ μλͺ μ κ°λλ€.
supporting λΈλμΉλ μΈ κ°μ§κ° μλ€.
1. feature branch
κΈ°λ₯μ κ°λ°νλ λΈλμΉ
feature λΈλμΉλ μλ‘μ΄ κΈ°λ₯ κ°λ° λ° λ²κ·Έ μμ μ΄ νμν λλ§λ€ develop λΈλμΉλ‘λΆν° λΆκΈ°νλ€. feature λΈλμΉμμμ μμ μ κΈ°λ³Έμ μΌλ‘ 곡μ ν νμκ° μκΈ° λλ¬Έμ μμ μ λ‘컬 μ μ₯μμμ κ΄λ¦¬νλ€.
κ°λ°μ΄ μλ£λλ©΄ develop λΈλμΉλ‘ mergeνμ¬ λ€λ₯Έ μ¬λλ€κ³Ό 곡μ νλ€.
- develop λΈλμΉμμ μλ‘μ΄ κΈ°λ₯μ λν feature λΈλμΉλ₯Ό λΆκΈ°νλ€.
- μλ‘μ΄ κΈ°λ₯μ λν μμ μ μννλ€.
- μμ μ΄ λλλ©΄ develop λΈλμΉλ‘ merge νλ€.
- λ μ΄μ νμνμ§ μμ feature λΈλμΉλ μμ νλ€. - λ§μ μ€κΈ°(branch)λ μμ μ νΌλμ μ€ μ μλ€.
- μλ‘μ΄ κΈ°λ₯μ λν feature λΈλμΉλ₯Ό μ€μ μ격 μ μ₯μμ μ¬λ¦°λ€.
//develop λΈλμΉμμ μμ±
$ git checkout -b feature/login develop
2. release branch
μ΄λ² μΆμ λ²μ μ μ€λΉνλ λΈλμΉ
λ°°ν¬λ₯Ό μν μ μ© λΈλμΉλ₯Ό μ¬μ©ν¨μΌλ‘μ¨ ν νμ΄ ν΄λΉ λ°°ν¬λ₯Ό μ€λΉνλ λμ λ€λ₯Έ νμ λ€μ λ°°ν¬λ₯Ό μν κΈ°λ₯ κ°λ°μ κ³μν μ μλ€. 1νμ 1.2λ²μ μ κ°λ°νκ³ , 2νμ 1.3λ²μ μ κ°λ°ν μ μλ€.
release λΈλμΉλ λ°°ν¬λ₯Ό μν μ΅μ’ μ μΈ λ²κ·Έ μμ , λ¬Έμ μΆκ° λ± λ°°ν¬μ μ§μ μ μΌλ‘ κ΄λ ¨λ μμ μ μννλ€. μ΄λ¬ν μμ λ€ μ΄μΈμ release λΈλμΉμ μλ‘μ΄ κΈ°λ₯μ μΆκ°λ‘ mergeνμ§ μλλ€.
3. hotfix branch
μΆμ λ²μ μμ λ°μν λ²κ·Έλ₯Ό μμ νλ λΈλμΉ
λ°°ν¬ν λ²μ μ κΈ΄κΈνκ² μμ μ ν΄μΌ ν νμκ° μμ κ²½μ°, master λΈλμΉμμ λΆκΈ°νλ λΈλμΉμ΄λ€. develop λΈλμΉμμ λ¬Έμ κ° λλ λΆλΆμ μμ νμ¬ λ°°ν¬ κ°λ₯ν λ²μ μ λ§λ€κΈ°μλ μκ°λ λ§μ΄ μμλκ³ μμ μ±μ 보μ₯νκΈ°λ μ΄λ €μ°λ―λ‘ λ°λ‘ λ°°ν¬κ° κ°λ₯ν master λΈλμΉμμ μ§μ λΈλμΉλ₯Ό λ§λ€μ΄ νμν λΆλΆλ§ μμ ν ν λ€μ master λΈλμΉμ λ³ν©νμ¬ μ΄λ₯Ό λ°°ν¬νλ κ²μ΄λ€.
- λ°°ν¬ν λ²μ μ κΈ΄κΈνκ² μμ ν λΆλΆ λ°μ => masterλΈλμΉμμ hotfixλΈλμΉ λΆκΈ°
- λ¬Έμ κ° λλ λΆλΆ μμ ν, masterλΈλμΉμ mergeνκ³ λ°°ν¬
- hotfix λΈλμΉμμμ λ³κ²½ μ¬νμ develop λΈλμΉμλ mergeνλ€.
λ²κ·Έ μμ λ§μ μν Hotfix λΈλμΉλ₯Ό λ°λ‘ λ§λ€μκΈ° λλ¬Έμ, λ€μ λ°°ν¬λ₯Ό μν΄ κ°λ°νλ μμ λ΄μ©μ μ ν μν₯μ μ£Όμ§ μλλ€. hotfixλ masterλΈλμΉμμ λΆλ¦¬ν μμ λΈλμΉλΌκ³ μκ°νλ©΄ λλ€.
branch λ€μ΄λ° κ·μΉ
μ΄λ€ λ°©μμΌλ‘ λΈλμΉμ μ΄λ¦μ μ νλμ§ λΈλμΉ μ’ λ₯μ λ°λΌ μ΄ν΄λ³΄μ.
1) master branch, develop branch
masterμ develop λΈλμΉλ λ³Έλ μ΄λ¦ κ·Έλλ‘ μ¬μ©νλ κ²½μ°κ° μΌλ°μ μ΄λ€.
2) feature branch
- μ΄λ€ μ΄λ¦λ κ°λ₯νλ€. λ¨, master, develop, release-..., hotfix-... κ°μ μ΄λ¦μ μ¬μ©ν μ μλ€.
- feature/κΈ°λ₯μμ½ νμμ μΆμ²νλ€. ex) feature/login
- feature/{issue-number}-{feature-name} μ΄μμΆμ μ μ¬μ©νλ€λ©΄ μ΄μ κ°μ νμμ λ°λ₯Έλ€.
ex) feature/1-init-project, feature/2-build-gradle-script-write
3) release branch
- release-RB_... λλ release-... λλ release/...κ°μ μ΄λ¦μ΄ μΌλ°μ μ΄λ€.
- release-... νμμ μΆμ²νλ€. ex) release-1.2
4) hotfix branch
- hotfix-... νμμ μΆμ²νλ€. ex) hotfix-1.2.1
References