Git & GitHub

Git flow

๐ŸŒณ์ง€ํ˜œ์˜ ์ˆฒ 2023. 7. 4. 00:51

Git flow๋ž€?

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

  • Git-flow ์ •์ฑ…
    • ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์•ฑ์ด๋‚˜ ์†”๋ฃจ์…˜, ํ˜น์€ public API์— ์ ํ•ฉํ•œ ์›Œํฌํ”Œ๋กœ์šฐ
    • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Git-flow๋Š” ๊ณ ๋ คํ•  ์ „๋žต์ด ์•„๋‹ˆ๋‹ค.
    • ์ •๊ธฐ์ ์œผ๋กœ ๋ฐฐํฌํ•ด์•ผํ•˜๋Š” ํ”„๋กœ์ ํŠธ
    • ์ˆ˜๋งŽ์€ ํ”„๋กœ์ ํŠธ ๋™์‹œ ์ง„ํ–‰
  • GitHub-flow ์ •์ฑ…
    • ์ƒ์‹œ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ.
    • ์ œ๊ฐ€ ์‚ฌ์šฉํ–ˆ๋˜ git flow ๋ฐฉ์‹์ด ์ด๊ฑฐ์ธ๊ฑฐ ๊ฐ™์•„์š”.
๋งŒ์•ฝ ์žฅ๊ธฐ๊ฐ„ ํ”„๋กœ์ ํŠธ๊ฐ€ ์กด์žฌํ•˜๊ณ , hotfix ๋“ฑ ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ๋˜๋Š” ํŒ€์€ Git-flow๋ฅผ, ์ƒ์‹œ ๋ฐฐํฌํ•˜๋Š” ํŒ€์€ ๊ฐ„๋‹จํ•œ GitHub-flow๊ฐ€ ์ ํ•ฉํ•˜๋‹ค.

Git Repository ๊ตฌ์„ฑ

  • Upstream Remote Repository: ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ณต์œ ํ•˜๋Š” ์ €์žฅ์†Œ๋กœ ์ตœ์‹  ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๋Š” ์›๊ฒฉ๋ธŒ๋žœ์น˜
  • Origin Remote Repository: Upstream Repository๋ฅผ Forkํ•œ ์›๊ฒฉ ๊ฐœ์ธ ์ €์žฅ์†Œ ex) ๊ฐœ์ธ์ €์žฅ์†Œ์˜ master(default)๋ธŒ๋žœ์น˜
  • Local Repository: ๋‚ด ์ปดํ“จํ„ฐ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐœ์ธ๋ธŒ๋žœ์น˜ ex) ๊ฐœ์ธ์ €์žฅ์†Œ์˜ ์ž‘์—… ๋ธŒ๋žœ์น˜

Git flow ์‚ฌ์šฉ๋ฐฉ๋ฒ•

์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ถฉ๋Œ์„ ๋ง‰๊ธฐ์œ„ํ•ด ์ตœ์‹  ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ €์žฅ๋˜์–ด์žˆ๋Š” ์›๊ฒฉ๋ธŒ๋žœ์น˜์„ pullํ•ด์ฃผ์‹œ๋Š” ๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค!
git pull upstream [์›๊ฒฉ ๋ธŒ๋žœ์น˜์˜ pullํ•ด์˜ฌ ๋ธŒ๋žœ์น˜๋ช…]โ€‹

์›๊ฒฉ๋ธŒ๋žœ์น˜์™€ ์—ฐ๊ฒฐํ•œ๋‹ค. (Forkํ•ด ์˜จ ๋ธŒ๋žœ์น˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

git remote add upstream [์›๊ฒฉ๋ธŒ๋žœ์น˜ ์ฃผ์†Œ]

  • origin: ์›๊ฒฉ์ €์žฅ์†Œ์™€ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฐœ์ธ ๋ ˆํฌ
  • upstream: ์›๊ฒฉ์ €์žฅ์†Œ

git flow๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

git flow init
  • ๋ธŒ๋žœ์น˜๋Š” ํ›„์— ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ด๋Ÿฐ ๋ฌธ๊ตฌ๊ฐ€ ๋œจ๋ฉด ๊ทธ๋ƒฅ ๋๊นŒ์ง€ Enter๋ฅผ ์—ฐํƒ€ํ•œ๋‹ค.

  • ์ž๋™์œผ๋กœ develop๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋‹ค.

๋‚ด๊ฐ€ ์ž‘์—…ํ•  ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

๋ณด์กฐ ๋ธŒ๋žœ์น˜๋Š” ์ผ์ • ๊ธฐ๊ฐ„ ๋™์•ˆ๋งŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.
- master : ์ œํ’ˆ์œผ๋กœ ์ถœ์‹œ๋  ์ˆ˜ ์žˆ๋Š” ๋ธŒ๋žœ์น˜ (๋ฉ”์ธ ๋ธŒ๋žœ์น˜)
- develop : ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜ (๋ฉ”์ธ ๋ธŒ๋žœ์น˜)
- feature : ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜ (๋ณด์กฐ ๋ธŒ๋žœ์น˜)
- release : ์ด๋ฒˆ ์ถœ์‹œ ๋ฒ„์ „์„ ์ค€๋น„ํ•˜๋Š” ๋ธŒ๋žœ์น˜ (๋ณด์กฐ ๋ธŒ๋žœ์น˜)
- hotfix : ์ถœ์‹œ ๋ฒ„์ „์—์„œ ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ • ํ•˜๋Š” ๋ธŒ๋žœ์น˜ (๋ณด์กฐ ๋ธŒ๋žœ์น˜)
// ์ž‘์—…ํ•  ๋ธŒ๋žœ์น˜๋ช…์€ ๋‚ด๊ฐ€ ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”์ง€ ์‰ฝ๊ฒŒ ์•Œ์ˆ˜์žˆ๋Š” ๋ธŒ๋žœ์น˜๋ช…์„ ์ž‘์„ฑํ•˜๋Š”๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
git flow [๋ณด์กฐ ๋ธŒ๋žœ์น˜] start [์ž‘์—…ํ•  ๋ธŒ๋žœ์น˜๋ช…]

  • ์ž๋™์œผ๋กœ ์ž‘์—…ํ•  ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์žˆ๋‹ค.

  • ํ•ด๋‹น ๋ธŒ๋žœ์น˜์—์„œ ๋งˆ์Œ๊ป ๊ธฐ๋Šฅ๊ตฌํ˜„์„ ์ž‘์—…ํ•œ ํ›„, ์™„๋ฃŒ๋˜๋ฉด ์ปค๋ฐ‹์„ ํ•œ๋‹ค.

๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜๋ฅผ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜(develop)์— merge์™€ ๋™์‹œ์— ๋‹ซ๋Š”๋‹ค.

git flow [๋ณด์กฐ ๋ธŒ๋žœ์น˜] finish [์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜๋ช…]

  • ์ž๋™์œผ๋กœ ์ž‘์—…๋ฌผ์ด ๋ฉ”์ธ ๋ธŒ๋žœ์น˜(develop)์— merge๋˜๊ณ , ์ž‘์—…ํ•œ ๋ธŒ๋žœ์น˜๊ฐ€ ์‚ญ์ œ๋˜์—ˆ๋‹ค.

๋ฉ”์ธ ๋ธŒ๋žœ์น˜(develop)์— pushํ•œ๋‹ค.

git push origin develop

์›๊ฒฉ๋ธŒ๋žœ์น˜๋กœ์˜ pull requests๋ฅผ ๋‚จ๊ธด ํ›„, ํŒ€์›๋“ค์˜ ์ฝ”๋“œ๋ฆฌ๋ทฐ๊ฐ€ ๋์ด๋‚˜๊ณ , ์š”๊ตฌ์‚ฌํ•ญ์ด ๋ชจ๋‘ ์™„๋ฃŒ๋˜๋ฉด ์›๊ฒฉ๋ธŒ๋žœ์น˜๋กœ merge๋ฅผ ํ•œ๋‹ค.

โ—์›๊ฒฉ๋ธŒ๋žœ์น˜๋กœ ๋ฐ”๋กœ pushํ•˜๋ฉด ๋‚œ๋ฆฌ๋‚˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

์ฐธ๊ณ 

 

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

{{item.name}} ์•ˆ๋…•ํ•˜์„ธ์š”. ์šฐ์•„ํ•œํ˜•์ œ๋“ค ๋ฐฐ๋ฏผํ”„๋ก ํŠธ๊ฐœ๋ฐœํŒ€์—์„œ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋Š” ๋‚˜๋™ํ˜ธ์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ์ €ํฌ ์•ˆ๋“œ๋กœ์ด๋“œ ํŒŒํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Git ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ

techblog.woowahan.com

 

 

 

Git ๋ธŒ๋žœ์น˜ ์ „๋žต ์ˆ˜๋ฆฝ์„ ์œ„ํ•œ ์ „๋ฌธ๊ฐ€์˜ ์กฐ์–ธ๋“ค – ํ™”ํ•ด ๋ธ”๋กœ๊ทธ | ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ

Git ๋ธŒ๋žœ์น˜ ์ „๋žต ํšจ๊ณผ์ ์œผ๋กœ VCS๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ํ”„๋กœ์ ํŠธ ์—ฌ๊ฑด์— ์–ด์šธ๋ฆฌ๋Š” ๋ธŒ๋žœ์น˜ ์ „๋žต์„ ์„ธ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•œ ์ฒซ ๋ฒˆ์งธ๋Š” ๋ฐ”๋กœ ๋ธŒ๋žœ์น˜ ์ „๋žต์— ๋Œ€ํ•œ ๋น„๊ต ๋ถ„์„์ž…๋‹ˆ๋‹ค. Git๊ธฐ๋ฐ˜์œผ๋กœ ์›Œํฌํ”Œ๋กœ์šฐ

blog-wp.hwahae.co.kr