728x90
๋ฐ˜์‘ํ˜•
์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํ•˜๋‚˜์˜ ์ €์žฅ์†Œ์— ์ž‘์—… ํ•  ๋•Œ, ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ํ˜‘์—…ํ•˜๊ธฐ ์œ„ํ•ด git branch ์— ๋Œ€ํ•œ ๊ทœ์น™์„ ์ •ํ•˜๊ณ  ์ €์žฅ์†Œ๋ฅผ ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ workflow ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋ฐ”๋กœ git branch ์ „๋žต์ด๋ผ๊ณ  ํ•œ๋‹ค.

๊ฐœ๋ฐœ์„ ํ•  ๋•Œ, ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ •์‚ฌํ•ญ์ด ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ , ๋…๋ฆฝ์ ์œผ๋กœ ๋™์‹œ์— ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๋˜ํ•œ, ๊ฐ ๋ธŒ๋žœ์น˜๊ฐ€ ํŠน์ • ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ์ž‘์—… ๋‹จ์œ„์˜ Rollback์ด ๊ฐ€๋Šฅํ•˜๊ธฐ์— ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ์˜ ์œ ์—ฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ „๋žต์€ ์›ํ•˜๋Š” ๋ฒ„์ „ ๋‹จ์œ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์˜ ๊ด€๋ฆฌ์™€ ๋ฐฐํฌ์˜ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ์ค€๋‹ค.
Branch ์ „๋žต์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
1๏ธโƒฃ Git flow
2๏ธโƒฃ Github Flow
3๏ธโƒฃ Gitlab flow

 

 

1๏ธโƒฃ Git flow

๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜

  1. master: ์ œํ’ˆ ์ถœ์‹œ ๋ฒ„์ „์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฉ”์ธ ๋ธŒ๋žœ์น˜
  2. develop: ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ์œ„ํ•ด ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  3. feature: ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜
  4. release: ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ์ค€๋น„ํ•˜๋Š” ๋ธŒ๋žœ์น˜
  5. hotfix: ์ถœ์‹œ๋œ ์ œํ’ˆ์˜ ๋ฒ„๊ทธ๋ฅผ ๊ณ ์น˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋žœ์น˜

 

Git Flow๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ์ง„ํ–‰ ํ๋ฆ„

  1. ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์€ develop ๋ธŒ๋žœ์น˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ feature ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ ์ž‘์—…
  2. ์ž‘์—…์ด ์™„๋ฃŒ๋œ feature ๋ธŒ๋žœ์น˜๋Š” develop ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉ.
    • PR์„ ํ†ตํ•ด ๋ฆฌ๋ทฐ ํ›„ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐฉ์‹
  3. ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์ค€๋น„๋Š” ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ์œ„ํ•ด ๊ฐœ๋ฐœ์ค‘์ธ develop ๋ธŒ๋žœ์น˜์—์„œ release ๋ธŒ๋žœ์น˜๋ฅผ ๋”ฐ์„œ ํ•œ๋‹ค.
    • ๋งŒ์•ฝ, ํ•ด๋‹น ๊ณผ์ •์—์„œ ๋ฒ„๊ทธ๊ฐ€ ๋ฐœ๊ฒฌ๋œ๋‹ค๋ฉด, release ๋ธŒ๋žœ์น˜์—์„œ ๋ฐ”๋กœ ๋ฐ˜์˜
  4. ํ…Œ์ŠคํŠธ ํ›„, ์ผ์ • ์ฃผ๊ธฐ๋กœ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ ์ œํ’ˆ ์ถœ์‹œ
  5. ๋ฐฐํฌ ์ดํ›„, release ๋ธŒ๋žœ์น˜์—์„œ ๋ฐœ๊ฒฌ๋˜์ง€ ๋ชปํ•œ ์ƒˆ๋กœ์šด ๋ฒ„๊ทธ๋Š” main ๋ธŒ๋žœ์น˜์—์„œ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ํŒ ํ›„, hotfix ๋ธŒ๋žœ์น˜์—์„œ ๋ฐ”๋กœ ๊ณ ์นœ ํ›„ main์œผ๋กœ ๋ณ‘ํ•ฉ
  6. hotfix ๋ธŒ๋žœ์น˜์—์„œ ๊ณ ์น˜๊ณ , main ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉ ๋˜์—ˆ๋‹ค๋ฉด, ์ด๋ฅผ develop ๋ธŒ๋žœ์น˜์—๋„ ๋ณ‘ํ•ฉ

 

ํŠน์ง•

  • release์™€ hotfix ๋ธŒ๋žœ์น˜๋ฅผ ํ†ตํ•ด ๋ช…ํ™•ํ•œ ๋ฐฐํฌ ์ ˆ์ฐจ๋ฅผ ๊ฐ–์ถ”๊ณ  ์žˆ๋‹ค.
  • ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋ธŒ๋žœ์น˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ณต์žกํ•œ ํ”„๋กœ์ ํŠธ๋‚˜ ๋Œ€๊ทœ๋ชจ ํŒ€์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ ํ•ฉํ•˜๋‹ค.
  • ๋ณต์žก์„ฑ๊ณผ Control์„ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ํŠน์ • ๊ธฐ๋Šฅ์ด๋‚˜ ์ˆ˜์ •์„ ๋น ๋ฅด๊ฒŒ ๋ฐฐํฌํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ๋“ฑ์—์„œ ์œ ์—ฐ์„ฑ์ด ๋–จ์–ด์ง.

 

 

 

2๏ธโƒฃ Github Flow

 

๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜

  • master : base๊ฐ€ ๋˜๋Š” ๋ธŒ๋žœ์น˜
  • feature : master์— ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜

 

Github Flow๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ์ง„ํ–‰ ํ๋ฆ„

  1. master ๋ธŒ๋žœ์น˜๋Š” ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ธŒ๋žœ์น˜.
  2. ๋งŒ์•ฝ, ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, master ๋ธŒ๋žœ์น˜๋กœ๋ถ€ํ„ฐ feature ๋ธŒ๋žœ์น˜๋กœ ์ƒˆ๋กœ ๋”ฐ์„œ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
  3. Task๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด, Pull Request๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Review๋ฅผ ์š”์ฒญํ•˜๊ณ , PR์€ feature → master ๋ธŒ๋žœ์น˜์ด๋‹ค.
  4. ๋ฆฌ๋ทฐ ์™„๋ฃŒ ํ›„, ํ”ผ๋“œ๋ฐฑ์ด ๋ชจ๋‘ ๋ฐ˜์˜๋˜์—ˆ๋‹ค๋ฉด, ํ•ด๋‹น feature ๋ธŒ๋žœ์น˜๋ฅผ master ๋ธŒ๋žœ์น˜๋กœ ๋ณ‘ํ•ฉํ•œ๋‹ค.

 

ํŠน์ง•

  • ๋‹จ์ˆœํ•˜๋ฉฐ ์ง€์†์ ์ธ ๋ฐฐํฌ๋ฅผ ๊ฐ•์กฐํ•˜๋ฉฐ, master ๋ธŒ๋žœ์น˜์—์„œ ๋ฐฐํฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  • ๋‹จ์ˆœํ•˜๋ฉฐ ๋น ๋ฅธ ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.
  • ํ…Œ์ŠคํŠธ์™€ ๊ฒ€์ฆ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ master ๋ธŒ๋žœ์น˜๋กœ Merge ๋˜๋ฏ€๋กœ ์œ„ํ—˜์„ฑ์ด ์žˆ๋‹ค.

 

 

 

3๏ธโƒฃ Gitlab flow

๋ณต์žกํ•œ Git Flow์™€ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•œ Github Flow์˜ ์ ˆ์ถฉ์•ˆ

 

 

๋ธŒ๋žœ์น˜ ์ข…๋ฅ˜

  • master : ์•ˆ์ •์ ์ธ ์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜๋Š” ๋ธŒ๋žœ์น˜๋กœ base๊ฐ€ ๋˜๋Š” ๋ธŒ๋žœ์น˜.
    • ์ „์ฒด์ ์ธ ํ…Œ์ŠคํŠธ ์ง„ํ–‰์ด ์™„๋ฃŒ๋˜์–ด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ณด์žฅ์ด ์žˆ๋‹ค๋ฉด, production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€.
    • ๋งŒ์•ฝ staging ๋‹จ๊ณ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, pre-production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€.
  • feature : ๊ฐ ๊ธฐ๋Šฅ์ด ๊ฐœ๋ฐœ๋˜๋Š” ๋ธŒ๋žœ์น˜.
    • master ๋ธŒ๋žœ์น˜์—์„œ ํŒŒ์ƒ๋˜๊ณ  PR์„ ํ†ตํ•ด ๋‹ค์‹œ ๋ณ‘ํ•ฉ๋œ๋‹ค.
  • Production : ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚œ ๊ธฐ๋Šฅ์˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•œ ๋ธŒ๋žœ์น˜
  • Pre-Production : ๋ฐฐํฌ ์ „์— ์ œํ’ˆ์„ ํ…Œ์ŠคํŠธ (QA, ํ’ˆ์งˆ๊ฒ€์‚ฌ) ํ•˜๋Š” ๋ธŒ๋žœ์น˜
    • ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด, production ๊ณผ master ์— ๊ฐ๊ฐ PR(Pull Request)์„ ๋ณด๋‚ธ๋‹ค.

 

Gitlab Flow๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ์ง„ํ–‰ ํ๋ฆ„

  • ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ, master ๋ธŒ๋žœ์น˜์—์„œ feature ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  • feature ๋ธŒ๋žœ์น˜์—์„œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„, PR์„ ํ†ตํ•ด
    • ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฒ€์ฆ ๋ฐ ๋ณด์žฅ์ด ์žˆ๋‹ค๋ฉด production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€ํ•œ๋‹ค.
    • ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฒ€์ฆ ๋ฐ ๋ณด์žฅ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, pre-production ๋ธŒ๋žœ์น˜๋กœ ๋จธ์ง€ํ•œ๋‹ค.
  • pre-production ๋ธŒ๋žœ์น˜์—์„œ ํ…Œ์ŠคํŠธ๊ฐ€ ์™„๋ฃŒ ๋˜์—ˆ๋‹ค๋ฉด, production๊ณผ master์— PR์„ ํ†ตํ•ด ๋ณ‘ํ•ฉํ•œ๋‹ค.

 

ํŠน์ง•

  • ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ํ”Œ๋กœ์šฐ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ ๋‹ค.
  • GitLab์€ ๋‚ด์žฅ๋œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋นŒ๋“œ, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋“ฑ์„ ์ž๋™ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ์•ˆ์ •์ ์ธ ๋ฐฐํฌ์™€ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๊ต์  ๊ฐ„๋‹จํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ํ˜‘์—…๊ณผ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.
  • ํŠนํžˆ ์ง€์†์ ์ธ ๋ฐฐํฌ๊ฐ€ ๊ฐ•์กฐ๋˜๋Š” ํ™˜๊ฒฝ์—์„œ ํšจ๊ณผ์ ์ด๋‹ค.
728x90
๋ฐ˜์‘ํ˜•

'๐Ÿˆโ€โฌ› git' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

git history ์‚ญ์ œํ•˜๊ธฐ  (0) 2022.10.04
git merge ์—๋Ÿฌ  (0) 2022.07.06

+ Recent posts