λΈλμΉ μ λ΅μ μ¬λ¬ κ°λ°μκ° νλμ μ μ₯μλ₯Ό μ¬μ©νλ νκ²½μμ μ μ₯μλ₯Ό ν¨κ³Όμ μΌλ‘ νμ©νκΈ° μν μν¬νλ‘μ°μ΄λ€.
κΈ°μ‘΄μ νμκ΄λ¦¬μ λΈλμΉ μ λ΅μ λμ μν¨λ€λ©΄ , μ¬λΏμ΄ ν¨κ» κ΄λ¦¬νλλ° μμ΄ κ³΅ν΅λ κ·μ½μ μ§ν€κΈ°λ§ νλ©΄ λκΈ° λλ¬Έμ μ½λλ₯Ό μμ±νκ³ μ μ₯νκ³ κ΄λ¦¬νλλ° λλ λ§μ λΉμ©μ μ κ°ν μ μλ€.
μ΄λ¬ν λΈλμΉ μ λ΅μ μ’ λ₯λ‘λ Github-flow, git-flow, gitlab-flow λ±μ΄ μλ€.
μ΄μ€ git-flowλ₯Ό ν΄λΉ flowκ° μ§λ branch μμ£Όλ‘ μ€λͺ
ν΄λ³΄κ³ μ νλ€.
μ격 μ μ₯μμλ μλͺ μ΄ λ¬΄νν λ κ°μ§ λ©μΈ λΈλμΉκ° μ‘΄μ¬νλ€.
λ°λ‘ main(master) λΈλμΉμ develop λΈλμΉμ΄λ€.
main(master) λΈλμΉμ develop λΈλμΉλ λ³Έλ μ΄λ¦ κ·Έλλ‘ μ¬μ©νλ κ²½μ°κ° μΌλ°μ μ΄λ€.
μ νμΌλ‘ μΆμ λ μ μλ λΈλμΉ
mainμμλ μ¬μ©μμκ² λ°°ν¬ κ°λ₯ν μνλ§μ κ΄λ¦¬
λ°°ν¬(release) μ΄λ ₯μ κ΄λ¦¬νκΈ° μν΄ μ¬μ©
λ€μ μΆμ λ²μ μ κ°λ°νλ λΈλμΉ
κΈ°λ₯ κ°λ°μ μν λΈλμΉ(feature)λ€μ λ³ν©νκΈ° μν΄ μ¬μ©
μ§μ μ μΈ κΈ°λ₯κ°λ°μ΄ μ΄λ£¨μ΄ μ§μ§ μμ (commit&push β | Pull&Merge request β)
mainμΌλ‘λΆν° νμ, λͺ¨λ κΈ°λ₯μ΄ μΆκ°λκ³ λ²κ·Έκ° μμ λμ΄ λ°°ν¬κ°λ₯ν μμ μ μΈ μνλΌλ©΄ developμ mainμ merge(λ³ν©)
Supporting λΈλμΉλ νΉλ³ν μ΄μ κ° μλ ν main νΉμ developμ λ°μλ ν μμ λλ―λ‘,
μ νν μλͺ μ κ°μ§λ€.
μμ λμ΄λ ν΄λΉ 컀λ°λ€μ μ΄λ―Έ develop νΉμ mainμ μ¬λ €λ³΄λ΄μ‘κΈ° λλ¬Έμ μ μ€λμ§ μλλ€. (revert, reset κ°λ₯)
Supporting λΈλμΉλ₯Ό ν΅ν΄ ꡬμ±μκ°μ μνμ μΈ λμκ°λ°, μ¬μ΄ κΈ°λ₯ μΆμ μ΄ κ°λ₯νλ€.
supporting λΈλμΉμ μ’ λ₯λ μΈκ°μ§κ° μλ€.
κΈ°λ₯μ κ°λ°νλ λΈλμΉ
feature λΈλμΉλ μλ‘μ΄ κΈ°λ₯ κ°λ° λ° λ²κ·Έ μμ μ΄ νμν λλ§λ€ develop λΈλμΉλ‘λΆν° λΆκΈ°
feature λΈλμΉμμμ μμ μ κΈ°λ³Έμ μΌλ‘ 곡μ ν νμκ° μκΈ°μ λ³΄ν΅ λ‘컬μμ κ΄λ¦¬
develop μΌλ‘λΆν° νμ, ν΄λΉ κΈ°λ₯ κ°λ° κ±΄μ΄ μλ£λλ©΄ develop λΈλμΉλ‘ merge
λ€μ΄λ° κ·μΉμ feature/{κΈ°λ₯μμ½}
μ νμμ κ°μ₯ λ§μ΄ μ¬μ©νλ€.
μ΄μμΆμ μ μ¬μ©νλ€λ©΄ λ€μκ³Ό κ°μ νμμ λ°λ₯Έλ€. feature/{issue-number}-{feature-name}
Feature branch flow
- develop λΈλμΉμμ μλ‘μ΄ κΈ°λ₯μ λν feature λΈλμΉλ₯Ό λΆκΈ°νλ€.
- μλ‘μ΄ κΈ°λ₯μ λν μμ μ μννλ€.
- μμ μ΄ λλλ©΄ develop λΈλμΉλ‘ mergeνλ€.
- μ΄λ―Έ μ¬μ©λμ§ μλλ° λ¨μμλ λΈλμΉκ° λ§λ€λ©΄ μμ μ νΌλμ μ€ μ μμΌλ―λ‘
νΉλ³ν μν©μ΄ μλ μ΄μ mergeμ ν¨κ» ν΄λΉ λΈλμΉλ₯Ό μμ νλ€.
(ν΄λΉ λΈλμΉλ₯Ό μμ νμ¬λ ν΄λΉ λΈλμΉμ commit λ€μ μμ λΈλμΉμ λ°μλκ³ μ μ₯λλ―λ‘
μμ νλ€κ³ μ μ€λλ κ²μ μμ)
- μλ‘μ΄ κΈ°λ₯ κ°λ°μ΄ νμνκ² λλ©΄ λ€μ 1λ²λΆν° μμνλ€.
# develop λΈλμΉμμ μμ±
$ git checkout -b feature/login develop
μ΄λ² μΆμ λ²μ μ μ€λΉνλ λΈλμΉ, ν΄λΉ releaseκ° μ’ λ£ λλ©΄ μμ
λ°°ν¬λ₯Ό μν μ μ© λΈλμΉλ₯Ό λΆκΈ°ν΄μ£Όλ©΄, ννμ΄ ν΄λΉ λ°°ν¬λ₯Ό μ€λΉνλ λμ λ€λ₯Ένμ λ€μ λ°°ν¬λ₯Ό μν κΈ°λ₯κ°λ°μ κ³μν μ μλ€.
( ex_ Aνμ 3λ²μ μΆμ / Bνμ 3-2λ²μ κ°λ°)
release λΈλμΉλ λ°°ν¬λ₯Ό μν μ΅μ’
μ μΈ λ²κ·Έ μμ , λ¬Έμ μΆκ° λ± λ°°ν¬μ μ§μ μ μΌλ‘ κ΄λ ¨λ
μμ
μ μννλ€.
release λΈλμΉλ develop μΌλ‘λΆν° νμ, λ²κ·Έν½μ€ λ° QA, ν μ€νΈλ₯Ό λ§μΉ ν μΆμμ€λΉκ° μλ£λλ©΄, developκ³Ό mainμΌλ‘ λ°μ
λ€μ΄λ° κ·μΉμ release-{x}.{y}.{z} μ νμμ λ°λ₯Έλ€.
μΆμ λ²μ μμ λ°μν λ²κ·Έλ₯Ό μμ νλ λΈλμΉ
λ°°ν¬ν λ²μ μ κΈ΄κΈν μμ κ±΄μ΄ λ°μν κ²½μ°, masterμμ λΆκΈ°νλ λΈλμΉ
μμ μλ£ ν, masterμ developμ λ°μ
λ²κ·Έ νΉμ μμ μ¬νμ΄ λ°μνμ¬, λ°°ν¬ν λ²μ μ μ μ§λ³΄μν΄μΌνλ κ²½μ°, develop λΈλμΉμμ
μμ νμ¬ λ°°ν¬νκΈ°μλ μκ°μ΄ λ§μ΄ μμλ¨
νκ·Έ λ€μ΄λ°μ hotfix-{x}.{y}.{z}
μ νμμ λ°λ₯Έλ€.
hotfix branch flow
- λ°°ν¬ν λ²μ μ κΈ΄κΈνκ² μμ ν λΆλΆ λ°μ β master λΈλμΉμμ hotfix λΈλμΉ λΆκΈ°
- λ¬Έμ κ° λλ λΆλΆ μμ ν, master λΈλμΉμ mergeνκ³ λ°°ν¬
- βββhotfix λΈλμΉμμμ λ³κ²½ μ¬νμ develop λΈλμΉμλ mergeνλ€.βββ
ν΄λΉ νλ‘μ νΈμ νκ·Έκ° μ‘΄μ¬νλ€λ©΄ git tag
λͺ
λ Ήμ΄λ‘ μ΄λ―Έ μ‘΄μ¬νλ νκ·Έλ₯Ό νμΈν μ μμ
-l
μ΅μ
μ μ΄μ©ν΄ git tag -l "v3.1*"
κ³Ό κ°μ΄ 3.1 λ²μ λμ λͺ¨λ νκ·Έλ₯Ό μ‘°νν μ μμ
νκ·Έμ νκΉ λ 컀λ°μ SHA-1 체ν¬μ¬μ κ°μ΄ 보λ κ²½μ° git show-ref --tagsλ₯Ό μ¬μ©
νκ·Έμλ Lightweight νκ·Έ, Annotated νκ·Έκ° μ‘΄μ¬
Lightweight νκ·Έμ κ²½μ° git tag [tagλͺ
]
μΌλ‘ μμ± (νμ¬κΉμ§ 컀λ°ν μνμ νκΉ
)
Annotated νκ·Έμ κ²½μ° tag -a
μ΅μ
μ ν΅ν΄ λ¨κΈΈ μ μμΌλ©°, μμ±μ, μ΄λ©μΌ , νκΉ
λ μ§ ,νκ·Έλ©μμ§κΉμ§ λ¨κΈΈ μ μμ. νκ·Έλ©μμ§μ κ²½μ° -m
μ΅μ
μ μ¬μ©
νΉμ 컀λ°μ νκ·Έλ₯Ό λ¨κΈ°κ³ μ νλ€λ©΄, git log
λ₯Ό ν΅ν΄ ν΄λΉ 컀λ°μ SHA-1 체ν¬μ¬ λ°Έλ₯λ₯Ό μ‘°νν λ€, git tag -a [νκ·Έλͺ
] [λμ 컀λ°μ 체ν¬μ¬κ°]
νμμΌλ‘ μ¬μ© κ°λ₯
https://nvie.com/posts/a-successful-git-branching-model/
https://blog.hwahae.co.kr/all/tech/9507
https://inpa.tistory.com/entry/GIT-β‘οΈ-github-flow-git-flow-π-λΈλμΉ-μ λ΅
https://techblog.woowahan.com/2553/
https://ujuc.github.io/2015/12/16/git-flow-github-flow-gitlab-flow/
https://git-scm.com/book/en/v2/Git-Basics-Tagging