git-flow, github-flow, gitlab-flow (1)

minkyungยท2023๋…„ 1์›” 8์ผ
0

git

๋ชฉ๋ก ๋ณด๊ธฐ
2/2
post-thumbnail

git flow

๐Ÿ“Ž ์šฐ๋ฆฐ Git-flow๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์š” - ์šฐ์•„ํ•œํ˜•์ œ๋“ค ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ

์žฅ์ 

๋ช…๋ น์–ด๊ฐ€ ๋‚˜์™€์žˆ๋‹ค.
์›ฌ๋งŒํ•œ ์—๋””ํ„ฐ์™€ IDE์—๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ์กด์žฌํ•œ๋‹ค.

๋‹จ์ 

๋ธŒ๋Ÿฐ์น˜๊ฐ€ ๋งŽ์•„ ๋ณต์žกํ•˜๋‹ค.
์•ˆ ์“ฐ๋Š” ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ช‡๋ช‡ ๋ธŒ๋Ÿฐ์น˜๋Š” ์• ๋งคํ•œ ํฌ์ง€์…˜์ด๋‹ค.

github flow

  1. master ๋ธŒ๋Ÿฐ์น˜๋Š” ์–ด๋–ค ๋•Œ๋“  ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    master ๋ธŒ๋Ÿฐ์น˜๋Š” ํ•ญ์ƒ ์ตœ์‹ ์˜ ์ƒํƒœ์ด๋ฉฐ, stable ์ƒํƒœ๋กœ Product์— ๋ฐฐํฌ๋˜๋Š” ๋ธŒ๋Ÿฐ์น˜์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ธŒ๋Ÿฐ์น˜์— ๋Œ€ํ•ด์„œ๋Š” ์—„๊ฒฉํ•œ role๋ฅผ ์ฃผ์–ด ์‚ฌ์šฉํ•œ๋‹ค.

  2. ์ƒˆ๋กœ์šด ์ผ์„ ์‹œ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋ธŒ๋Ÿฐ์น˜๋ฅผ master์—์„œ ๋”ด๋‹ค๋ฉด ์ด๋ฆ„์€ ์–ด๋–ค ์ผ์„ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•œ๋‹ค.
    git flow ์™€๋Š” ๋‹ค๋ฅด๊ฒŒ feature ๋ธŒ๋Ÿฐ์น˜๋‚˜ develop ๋ธŒ๋Ÿฐ์น˜๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋ธŒ๋Ÿฐ์น˜์˜ ์ด๋ฆ„์€ ์ž์„ธํ•˜๊ฒŒ ์–ด๋–ค ์ผ์„ ํ•˜๊ณ  ์žˆ๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์ž‘์„ฑํ•ด์ฃผ๋„๋ก ํ•˜์ž. Github ํŽ˜์ด์ง€์—์„œ ๋ณด๋ฉด ์–ด๋–ค ์ผ๋“ค์ด ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋ง์ด๋‹ค.

  3. ์›๊ฒฉ์ง€ ๋ธŒ๋Ÿฐ์น˜๋กœ ์ˆ˜์‹œ๋กœ push๋ฅผ ํ•œ๋‹ค.
    git flow ์™€ ๊ฐ€์žฅ ์ƒ๋ฐ˜๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ•ญ์ƒ ์›๊ฒฉ์ง€์— ์ž์‹ ์ด ํ•˜๊ณ  ์žˆ๋Š” ์ผ๋“ค์„ ์˜ฌ๋ ค ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.
    ์ด ๋ฐฉ๋ฒ•์˜ ์ข‹์€ ์ ์€ ํ•˜๋“œ์›จ์–ด์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ž‘์—…ํ•˜๋˜ ๋ถ€๋ถ„์ด ์—†์–ด์ง€๋”๋ผ๋„ ์›๊ฒฉ์ง€์— ์žˆ๋Š” ์†Œ์Šค๋ฅผ ๋ฐ›์•„์„œ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.

  4. ํ”ผ๋“œ๋ฐฑ์ด๋‚˜ ๋„์›€์ด ํ•„์š”ํ•  ๋•Œ, ๊ทธ๋ฆฌ๊ณ  ๋จธ์ง• ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์„ ๋•Œ๋Š” pull request๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
    pull request ๋Š” ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ๋„์™€์ฃผ๋Š” ์‹œ์Šคํ…œ์ด๋‹ค.
    ๊ทธ๋ ‡๊ธฐ์— ์ด๊ฒƒ์„ ์ด์šฉํ•˜์—ฌ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•˜๊ณ , ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. ๋ฌผ๋ก  ๋จธ์ง€๊ฐ€ ์ค€๋น„ ์™„๋ฃŒ๋˜์–ด master ๋ธŒ๋Ÿฐ์น˜๋กœ ๋ฐ˜์˜์„ ์š”๊ตฌํ•˜์—ฌ๋„ ๋œ๋‹ค.

  5. ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ์™€ ์‚ฌ์ธ์ด ๋๋‚œ ํ›„ master๋กœ ๋จธ์ง€ํ•œ๋‹ค.
    ๊ณง์žฅ product๋กœ ๋ฐ˜์˜์ด๋  ๊ธฐ๋Šฅ์ด๊ธฐ์— ์ดํ•ด๊ด€๊ณ„๊ฐ€ ์—ฐ๊ฒฐ๋œ ์‚ฌ๋žŒ๋“ค๊ณผ ์ถฉ๋ถ„ํ•œ ๋…ผ์˜ ์ดํ›„ ๋ฐ˜์˜ํ•˜๋„๋ก ํ•œ๋‹ค.

  6. master๋กœ ๋จธ์ง€๋˜๊ณ  ํ‘ธ์‹œ๋˜์—ˆ์„ ๋•Œ๋Š” ์ฆ‰์‹œ ๋ฐฐํฌ๋˜์–ด์•ผ ํ•œ๋‹ค.
    GitHub Flow์˜ ํ•ต์‹ฌ์ธ๋“ฏํ•œ master๋กœ ๋จธ์ง€๊ฐ€ ์ผ์–ด๋‚˜๋ฉด hubot์„ ์ด์šฉํ•˜์—ฌ ์ž๋™์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋˜๋„๋ก ์„ค์ •ํ•ด๋†“๋Š”๋‹ค.

์žฅ์ 

๋ธŒ๋Ÿฐ์น˜ ์ „๋žต์ด ๋‹จ์ˆœํ•˜๋‹ค.
์ฒ˜์Œ git์„ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ์ •๋ง ์ข‹์€ ์‹œ์Šคํ…œ์ด ๋œ๋‹ค.
Github ์‚ฌ์ดํŠธ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ง„ํ–‰ํ•œ๋‹ค.
์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
CI๊ฐ€ ํ•„์ˆ˜์ ์ด๋ฉฐ, ๋ฐฐํฌ๋Š” ์ž๋™์œผ๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
Github๊ฐ€ ์ž‘์—…์„ ํ•  ๋•Œ ์ด๋ ‡๊ฒŒ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค.

๋‹จ์ 

CI์™€ ๋ฐฐํฌ ์ž๋™ํ™”๊ฐ€ ๋˜์–ด์žˆ์ง€ ์•Š์€ ์‹œ์Šคํ…œ์—์„œ๋Š” ์‚ฌ๋žŒ์ด ๊ด€๋ จ๋œ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.
๋งŽ์€ ๊ฒƒ๋“ค์ด ์˜ฌ๋ผ์˜ค๊ธฐ ์‹œ์ž‘ํ•˜๋ฉดโ€ฆ ๊ทธ๋•Œ๋ถ€ํ„ฐ๋Š” ํ—ฌ์ดโ€ฆ
๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜๋‹ˆโ€ฆ ์ด๊ฑฐ ๋‹จ์ ์ด ์žˆ๋‚˜ ์‹ถ๋‹คโ€ฆ

Gitlab Flow

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

production ๋ธŒ๋žœ์น˜๋Š” ์˜ค์ง ๋ฐฐํฌ๋งŒ์„ ๋‹ด๋‹นํ•œ๋‹ค.
pre-production ๋ธŒ๋žœ์น˜๋Š” production ๋ธŒ๋žœ์น˜๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋„˜๊ธฐ๊ธฐ ์ „์— ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ธŒ๋žœ์น˜์ด๋‹ค.

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€