๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

git-flow ์‹œ์ž‘ํ•˜๊ธฐ

ยท ์•ฝ 4๋ถ„

git-flow#

git-flow ๋Š” Vincent Driessen์˜ ๋ธŒ๋žœ์นญ ๋ชจ๋ธ์„ ์ ์šฉํ•˜์—ฌ ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ž‘์—…ํ•  ์ˆ˜์žˆ๋„๋ก ํ•˜๋Š” git์˜ ํ™•์žฅ์ด๋‹ค. ๋” ์•Œ์•„๋ณด๊ธฐ

git-flow vs git-flow-avh#

git-flow ์„ค์น˜ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด๋ฉด, git-flow-avh๋ฅผ ์„ค์น˜ํ•˜๋ผ๋Š” ๊ฐ€์ด๋“œ๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, git-flow ์ €์žฅ์†Œ๊ฐ€ ์žˆ๊ณ , ์ด๊ฒŒ์›๋ณธ์ธ ๊ฒƒ ๊ฐ™์•„์„œ ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์ด ์žˆ์—ˆ๋‹ค.

๋‹คํ–‰ํžˆ git-flow-avh์˜ ๊นƒํ—™ ์œ„ํ‚ค์˜ Home๊ณผ FAQ์— ๊ฐ„๋žตํ•œ ์„ค๋ช…์ด์žˆ๋‹ค.

git-flow์—์„œ hooks์™€ filter ๊ตฌํ˜„์ด ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์›๋ณธ git-flow์— ๋Œ€ํ•œ ํŒจ์น˜๋ฅผ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. 5๊ฐœ์›”์ด ์ง€๋‚˜๋„, ํŒจ์น˜๊ฐ€ ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜๊ณ  ์šฐ๋ฆฌ๋Š” AVH Edition์„ ๋งŒ๋“œ๋Š” ์ผ์— ์ง‘์ค‘ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

AVH๋Š” A Virtual Home์ด๋ผ๋Š” ์ž‘์„ฑ์ž์˜ ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ ์ด๋ฆ„์—์„œ ๋”ฐ์™”๋‹ค๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ 

AVH Edition์ด git-flow์˜ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋“ค์„ ํฌํ•จํ•˜๋ฉด์„œ hooks์™€ filter ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ณ  , cheatsheet ๋ฅผ ํฌํ•จํ•ด์„œ AVH Edition์œผ๋กœ ๊ฐ€์ด๋“œํ•˜๋Š” ๋ฌธ์„œ๊ฐ€ ๋งŽ์•„์„œ AVH Edition์œผ๋กœ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.

์„ค์น˜ํ•˜๊ธฐ#

Installation ์—์„œ ์šด์˜์ฒด์ œ ๋ณ„ ์„ค์น˜ ๊ฐ€์ด๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

MacOS ๊ธฐ์ค€์œผ๋กœ๋Š” brew๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•œ๋‹ค.

brew install git-flow-avh

1.7.0 ๋ฒ„์ „์—์„œ git flow init ์‹œ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ, (์ด์Šˆ) ~/.gitflow_export ์— FLAGS_GET_OPT_CMD ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์›์ธ์ด์—ˆ๋‹ค. ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ ๋˜๋ฉด์„œ ์ด๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ 

์‹œ์ž‘ํ•˜๊ธฐ#

๋จผ์ €, git ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

git init hello-git-flow

git ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™ํ•œ ํ›„, git flow๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

cd hello-git-flowgit flow init

CLI์˜ ์งˆ์˜์— ๋”ฐ๋ผ ์ง„ํ–‰ํ•˜์—ฌ ๋ธŒ๋žœ์น˜ ์ปจ๋ฒค์…˜์„ ์ •ํ•œ๋‹ค.

๋ช…๋ น์–ด#

git-flow ๋ช…๋ น์–ด ํ•œ์งค ์š”์•ฝ

git-flow commands

๋Š๋‚€์ #

ํ‰์†Œ ํ•˜๋‚˜์˜ Origin ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‘๊ณ , main, develop, feature/, fix/ ... ์œผ๋กœ ๋ธŒ๋žœ์นญํ•œ ํ›„, Pull Request -> Merge -> Pull (develop) ๋ฐฉ์‹์˜ workflow๋ฅผ ์‚ฌ์šฉํ–ˆ๋Š”๋ฐ git flow์˜ finish ๋ช…๋ น์–ด๊ฐ€ ๋กœ์ปฌ์—์„œ ๋จธ์ง€๋˜๋Š” ๋ฐฉ์‹์ด๋ผ, Pull Request์™€ ํ•จ๊ป˜ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ์ ˆํ•œ์ง€ ๊ณ ๋ฏผ์ด ๋“ค์—ˆ๋‹ค.

๋‹คํ–‰ํžˆ, Stack Overflow์— ๋น„์Šทํ•œ ๊ณ ๋ฏผ์ด์žˆ์—ˆ๋‹ค. ๊ธฐ์กด ์›Œํฌํ”Œ๋กœ์šฐ ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, finish ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , publish -> PR -> Merge -> Pull ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค. ์ถ”๊ฐ€์ ์œผ๋กœ git-flow-avh์˜ hooks ๊ธฐ๋Šฅ์„ํ™œ์šฉํ•ด PR ์ž‘์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋˜๋Š”, ํ•˜๋‚˜์˜ Upstream ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‘๊ณ  forkํ•˜์—ฌ ํ˜‘์—… ๋Œ€์ƒ์ž์˜ ๊ฐœ์ธ Origin ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ PRํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹๋„ ์žˆ๋‹ค. ์ฐธ๊ณ 

์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ฐ์ž์˜ Origin repo์—์„œ ๋ถ€๋‹ด์—†์ด ๋‹ค์–‘ํ•œ ์‹คํ—˜๋“ค์„ ํ•ด๋ณผ ์ˆ˜์žˆ๋Š” ์žฅ์ ๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

github-flow-repository-structure

Reference#

git-flow cheatsheet

์šฐ๋ฆฐ Git-flow๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์š”