๐Ÿ™ Github์—์„œ ํ˜‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•

cosยท2020๋…„ 8์›” 30์ผ
56
post-thumbnail

ํ† ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ ๊ฐ€๋” ๊นƒํ—™์„ ์ฒ˜์Œ ๋‹ค๋ฃจ๋Š” ๋ถ„์ด๋‚˜, ๊นƒํ—™์—์„œ ํ˜‘์—…์„ ์ฒ˜์Œ์œผ๋กœ ํ•˜๋Š” ๋ถ„๋“ค์—๊ฒŒ ์–ด๋–ค ์‹์œผ๋กœ ๊นƒํ—™์„ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…์„ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ดํ›„ ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์ด ์ž์ฃผ ์ผ์–ด๋‚  ๊ฒƒ ๊ฐ™์•„ ๊ธ€๋กœ ๋‚จ๊ฒจ๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์ด ๊ธ€์€ Git์ด ์ต์ˆ™ํ•˜๋‹ค๋Š” ์ „์ œํ•˜์— ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ปค๋ฐ‹, ํ‘ธ์‹œ&ํ’€, ๋ธŒ๋žœ์น˜, ์ฒดํฌ์•„์›ƒ, ๋จธ์ง€ ๋“ฑ๋“ฑ์˜ ๊ฐœ๋…์€ ์•„์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ๋ถ€์กฑํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ์—ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ ํ•ด๋ณด์‹œ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Velog์— ์ข‹์€ ๊ธ€์ด ์žˆ์–ด ๊ฐ™์ด ๋‚จ๊ฒจ๋ด…๋‹ˆ๋‹ค.

๐ŸŒŠ Git Flow

Github์˜ ๊ธฐ๋Šฅ๋“ค์„ ์•Œ์•„๋ณด๊ธฐ ์ด์ „์—, Git ๋ธŒ๋žœ์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ „๋žต ์ค‘ ํ•˜๋‚˜์ธ Git Flow๋ฅผ ์•Œ์•„๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. Git์„ ๋งŽ์ด ์‚ฌ์šฉํ•˜์…จ๋‹ค๋ฉด ๋จธ์ง€(merge-๋ณ‘ํ•ฉ)๊ณผ์ •์—์„œ ๋งŽ์€ ์ถฉ๋Œ์ด ์ผ์–ด๋‚œ๋‹ค๋Š” ๊ฒƒ์„ ์•„์‹ค ๊ฒ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ถฉ๋Œ์„ ์ตœ๋Œ€ํ•œ ํ”ผํ•˜๊ณ ์ž ๋‹ค์–‘ํ•œ ์ „๋žต์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, ๊ทธ ์ค‘ ํ•œ ์ „๋žต์ด Git Flow ์ž…๋‹ˆ๋‹ค.

์‚ฌ์‹ค ์œ„์— ์žˆ๋Š” ์‚ฌ์ง„๋ณด๋‹ค ๋”์šฑ ์ž์„ธํ•œ ์ „๋žต์ด Git Flow์ด์ง€๋งŒ, ์ €๋Š” ์ด๋ฅผ ๊ฐ„๋žตํ™”ํ•œ ๋ฒ„์ „์„ ์ž์ฃผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ์œ„์™€ ๊ฐ™์ด ์ฃผ ๋ธŒ๋žœ์น˜์ธ master์™€ develop ๋ธŒ๋žœ์น˜๊ฐ€ ์žˆ๊ณ , ์ด ๋‘ ๋ธŒ๋žœ์น˜์— ๋จธ์ง€๋ฅผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ์Šต๋‹ˆ๋‹ค.

  • master : ๊ธฐ์ค€์ด ๋˜๋Š” ๋ธŒ๋žœ์น˜๋กœ ์‹ค์ œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๊ฒŒ ๋˜๋Š” ์„œ๋น„์Šค๊ฐ€ ๋ฐฐํฌ๋˜์–ด์žˆ๋Š” ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค.
  • develop : ๊ฐœ๋ฐœ์ด ํ™œ๋ฐœํžˆ ์ด๋ค„์ง€๋Š” ๋ธŒ๋žœ์น˜๋กœ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๋ธŒ๋žœ์น˜๋Š” ํ•ญ์ƒ ์—ฌ๊ธฐ์— ๋จธ์ง€๋ฉ๋‹ˆ๋‹ค.

Git Flow์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ ์€, ๋ธŒ๋ฆฐ์น˜์˜ ์—ญํ• ์— ๋”ฐ๋ผ ๋ฌด์กฐ๊ฑด ์ง€์ •๋œ ๋ธŒ๋žœ์น˜์—๋งŒ ๋จธ์ง€ํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•œ ๋ธŒ๋žœ์น˜๋Š” ๋ฌด์กฐ๊ฑด develop ๋ธŒ๋žœ์น˜์— ๋จธ์ง€ํ•ด์•ผ ํ•˜๊ณ , develop ๋ธŒ๋žœ์น˜์— ์žˆ๋Š” ๊ธฐ๋Šฅ๋“ค์„ ์ถœ์‹œ(๋ฐฐํฌ)ํ•  ๋•Œ์—๋งŒ master ๋ธŒ๋žœ์น˜์— ๋จธ์ง€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Git Flow๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐœ๋ฐœํ•  ๋•Œ์—” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค.

  1. develop ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค (๊ทธ๋ฆผ 1) - master ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์ง€ ๋งˆ์„ธ์š”!
  2. ์ปค๋ฐ‹์„ ํ•˜๋ฉฐ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€, ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๋๋‚˜๋ฉด develop์— ๋จธ์ง€๋ฅผ ํ•ฉ๋‹ˆ๋‹ค (๊ทธ๋ฆผ 3)
  3. ๋งŒ์•ฝ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ ํŒ€์›์ด develop ๋ธŒ๋žœ์น˜์— ๋จธ์ง€๋ฅผ ํ–ˆ๋‹ค๋ฉด, ์ž‘์—…ํ•˜๊ธฐ ์ „์— ์ž‘์—… ์ค‘์ธ ๋ธŒ๋žœ์น˜์— develop ๋ธŒ๋žœ์น˜๋ฅผ ๋จธ์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆผ 4) - ์ด๋Š” ์ถ”ํ›„ ๋จธ์ง€๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ (๊ทธ๋ฆผ 5) ์ถฉ๋Œ์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๋จธ์ง€๋ฅผ ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  4. ์ถฉ๋ถ„ํžˆ ๊ฐœ๋ฐœ์ด ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด, develop ๋ธŒ๋žœ์น˜๋ฅผ master์— ๋จธ์ง€ํ•ด ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค. (๊ทธ๋ฆผ 6)

์—ฌ๊ธฐ์—, ์ €๋Š” ์ถ”๊ฐ€๋กœ ํ•œ๊ฐ€์ง€ ๊ทœ์น™์„ ์ •ํ•ด ์ถฉ๋Œ ๊ฐ€๋Šฅ์„ฑ์„ ๋”์šฑ ๋‚ฎ์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋ฒˆ ๋จธ์ง€ํ•œ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋Š” ์žฌ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆผ 2a์™€ 3์ฒ˜๋Ÿผ ๋จธ์ง€๋ฅผ ํ•˜๊ณ  ๋˜ ๋จธ์ง€๋ฅผ ํ•˜๋Š” ์ž‘์—…์€ Git Flow์—์„œ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ œ๊ฐ€ ํ˜‘์—…์„ ํ•  ๋• ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค.

์ €๋Š” ๋ณธ๊ฒฉ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” Git Flow, ์ข€ ๊ฐ„๋žตํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋Š” Git Flow์—์„œ develop ๋ธŒ๋žœ์น˜๋ฅผ ๋บ€ Github Flow๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ™ Github

์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ Github์„ ํ™œ์šฉํ•ด๋ณผ๊นŒ์š”? Github์„ ํ˜‘์—…์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ์‹  ๋ถ„๋“ค์€ ์ฃผ๋กœ Code ๋ฉ”๋‰ด๋ฅผ ์‚ฌ์šฉํ•˜์…จ์„ ํ…๋ฐ, ํ˜‘์—…์—์„œ๋Š” ์œ„ ์‚ฌ์ง„์—์„œ ๋นจ๊ฐ„์ƒ‰ ๋ฐ•์Šค์นœ 4๊ฐ€์ง€ ๋ฉ”๋‰ด๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•˜๋‚˜์”ฉ ๋‹ค๋ค„๋ณด๊ณ  ์–ด๋–ค ์ˆœ์œผ๋กœ ํ˜‘์—…์— ์‚ฌ์šฉ๋˜๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค.

๐Ÿ“Š Project

ํ”„๋กœ์ ํŠธ๋Š” ์ž‘์—… ํ˜„ํ™ฉ๊ณผ ์ง„ํ–‰๋„๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ด์ž…๋‹ˆ๋‹ค. ๋’ค์—์„œ ์†Œ๊ฐœํ•  ์ด์Šˆ, PR(ํ’€ ๋ฆฌํ€˜์ŠคํŠธ)๋“ค์„ ํ•˜๋‚˜์˜ ์ž‘์—…์œผ๋กœ ๊ตฌ๋ถ„ํ•ด ๊ทธ ์ž‘์—…์ด ํ˜„์žฌ ์–ด๋Š ์ •๋„ ์ง„ํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ €์˜ ๊ฒฝ์šฐ์—๋Š” ์ƒˆ๋กœ์šด ๋ฒ„์ ผ์„ ์ค€๋น„ํ•˜๋Š” ๋‹จ์œ„๋ณ„๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ๋ชจ๋‘ ์ง„ํ–‰๋˜์—ˆ์„ ๋•Œ ๋ฐฐํฌ(master ๋ธŒ๋žœ์น˜์— ๋จธ์ง€)ํ•˜๋Š” ์‹์œผ๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, Github์—์„œ๋Š” ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด์„œ ์ž๋™ํ™”๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•ด ์ง์ ‘ ์ž‘์—…์„ Drag & Drop์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์ด์Šˆ๋‚˜ PR์˜ ์ง„ํ–‰๋ฅ ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ž‘์—…์ด ์˜ฎ๊ฒจ์ง€๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ์ƒ๋‹จ ์ด๋ฏธ์ง€์— ์žˆ๋Š” ํ™”๋ฉด์„ Board๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๋งˆ์น˜ ๊ฒŒ์‹œํŒ์— ๋ฉ”๋ชจ๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ˆœ์„œ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์ €์žฅ๋˜๋Š” ์ˆœ์„œ๋ฅผ ์ž‘์—…ํ•ด์•ผ ํ•˜๋Š” ์ˆœ์„œ๋กœ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โš ๏ธ Issue

์ด์Šˆ๋Š” ์ž‘์—…์„ ์ •๋ฆฌํ•˜๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์ž‘์—…์€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ๋  ์ˆ˜๋„ ์žˆ๊ณ , ๋ฒ„๊ทธ ์ˆ˜์ •์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์Šˆ๊ฐ€ ๋” ์ž์„ธํ•˜๊ณ  ์„ธ๋ฐ€ํ• ์ˆ˜๋ก ๋”์šฑ ์ฒด๊ณ„ํ™”๋œ ํ˜‘์—…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด์Šˆ๋ฅผ ๋งŒ๋“ค๋ฉด ์ด์Šˆ๋ฅผ ์—ด์—ˆ๋‹ค(open)๋ผ๊ณ  ํ•˜๊ณ , ์ž‘์—…์ด ๋๋‚˜ ์ด์Šˆ๋ฅผ ์ •๋ฆฌํ•˜๋ฉด ์ด์Šˆ๋ฅผ ๋‹ซ์•˜๋‹ค(close)๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค.

์ด์Šˆ ์„ธ๋ถ€ํ™”๋ฉด์„ ํ†ตํ•ด ์ด์Šˆ์˜ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์งš์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  • ์ œ๋ชฉ ์˜†์— ์žˆ๋Š” #2๋Š” ์ด์Šˆ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ์ด ๋ฒˆํ˜ธ๋Š” PR์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋Š” ๊ณ ์œ ๋ฒˆํ˜ธ๋กœ, ํ”„๋กœ์ ํŠธ ์–ด๋””์—์„œ๋“ ์ง€ ์ € ๋ฒˆํ˜ธ๋ฅผ ํ™œ์šฉํ•ด ์ง€๊ธˆ ํ•˜๋Š” ํ™œ๋™์ด ์ด ์ด์Šˆ์™€ ๊ด€๋ จ๋˜์–ด ์žˆ๋‹ค๊ณ  ์–ธ๊ธ‰(mentioned)ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด์Šˆ ์„ธ๋ถ€ํ™”๋ฉด์—์„œ๋„ ์–ด๋””์„œ ์–ธ๊ธ‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ œ๋ชฉ๊ณผ ์ปค๋ฉ˜ํŠธ๋ฅผ ํ†ตํ•ด ์ด ์ด์Šˆ์—์„œ ํ•ด์•ผํ•˜๋Š” ์ผ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์œ„์™€ ๊ฐ™์ด Checkbox๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ์ด์Šˆ์˜ ์ง„ํ–‰๋„๋ฅผ ํ•œ๋ˆˆ์— ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.
  • Assignees๋ฅผ ํ†ตํ•ด ์ด ์ด์Šˆ์˜ ์ž‘์—…์ž, ์ฑ…์ž„์ž๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Labels๋ฅผ ํ†ตํ•ด ์ด์Šˆ๋ฅผ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Github์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๋ผ๋ฒจ์„ ์‚ฌ์šฉํ•ด๋„ ๊ดœ์ฐฎ๊ณ , ๋ผ๋ฒจ์„ ์ง์ ‘ ๋งŒ๋“ค์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ, ํ”„๋กœ์ ํŠธ์— ์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ž๋™ํ™”๋ฅผ ๋“ฑ๋กํ•ด ๋†“์•„์„œ ์ขŒ์ธก ํ•˜๋‹จ์„ ๋ณด๋ฉด ์ด์Šˆ๊ฐ€ ๋‹ซํžŒ ์ดํ›„์— ์ž๋™ํ™”์— ์˜ํ•ด ํ”„๋กœ์ ํŠธ์—์„œ ์ด์Šˆ๊ฐ€ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด์Šˆ์—์„œ ์ค‘์š”ํ•œ ์ ์€ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋ฅผ ์ด์Šˆ ๋‹จ์œ„๋กœ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ถ”์ฒœ๋˜๋Š” ์ž‘์—…๋ฐฉ์‹์€ ๋ธŒ๋žœ์น˜ ํ•˜๋‚˜์— ์ด์Šˆ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์ด์Šˆ์—์„œ ์ ์–ด๋†“์€ ์ž‘์—…๋“ค์„ ๋‹ค ์ง„ํ–‰ํ–ˆ๋‹ค๊ณ  ํ•˜๋ฉด, ๋ฐ”๋กœ develop ๋ธŒ๋žœ์น˜์— ๋จธ์ง€ํ•˜๋Š” ๊ฒƒ์ผ๊นŒ์š”? ๊ทธ๊ฑด ์•„๋‹™๋‹ˆ๋‹ค. ๋จธ์ง€ํ•˜๊ธฐ ์ „์— ํ•œ ๋‹จ๊ณ„ ์ ˆ์ฐจ๋ฅผ ๊ฑฐ์ณ์•ผ ํ•˜๋Š”๋ฐ, ๋ฐ”๋กœ Pull Request์ž…๋‹ˆ๋‹ค.

๐Ÿ“ฌ PR(Pull Request)


ํ’€ ๋ฆฌํ€˜์ŠคํŠธ, ์ค„์—ฌ์„œ PR์€ ํ˜‘์—…์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ๋Šฅ์œผ๋กœ, ๋จธ์ง€๋ฅผ ํ•˜๊ธฐ ์ „ ํ™•์ธ์„ ๋ฐ›๋Š” ์ ˆ์ฐจ๋ฅผ ๋„์™€์ฃผ๋Š” ๋ฉ”๋‰ด์ž…๋‹ˆ๋‹ค. ํŒ€์›์—๊ฒŒ ํ™•์ธ์„ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ๊ณ , ์ž๋™ํ™”๋œ ์ ˆ์ฐจ์— ์˜ํ•ด ํ™•์ธ์„ ๋ฐ›์„์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ž๋Š” PR review๋ฅผ ํ†ตํ•ด, ํ›„์ž๋Š” Action์— ์˜ํ•ด ํ™•์ธ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„ ํ™”๋ฉด์„ ๋ณด๋ฉด ์ด์Šˆ ์„ธ๋ถ€ํ™”๋ฉด๊ณผ ๋ณ„ ๋‹ค๋ฅผ๊ฒŒ ์—†๊ณ , ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ๊ณผ ๊ฐ™๊ฒŒ ์ž‘๋™๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์šฐ์ธก์— Reviewers๋ผ๋Š” ํƒญ์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Reviewers๋ฅผ ํ†ตํ•ด ์ด ๋ธŒ๋žœ์น˜, ์ด PR์„ ๋ฆฌ๋ทฐํ•  ํŒ€์›์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ์–ด๋กœ ์ง€์ •์ด ๋˜๋ฉด, ์ƒ๋‹จ๊ณผ ๊ฐ™์ด Add your review ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ฆฌ๋ทฐ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก ํ˜‘์—…์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  ์ฝ”๋“œ๋Š” ๋‚˜๋จธ์ง€ ํŒ€์›์ด ๋ชจ๋‘ ๋‹ค ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ๋ฅผ ํ•˜๋Š” ์ด์œ  ์ค‘ ํ•˜๋‚˜์ฃ .

Reviewer๋กœ ์ง€์ •๋œ๋‹ค๋ฉด, ์ด ๋ธŒ๋žœ์น˜์— ์žˆ๋Š” ์ฝ”๋“œ์— ์ปค๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ฉฐ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ์™œ ์ž‘์„ฑํ–ˆ๋Š”์ง€, ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•ด๋„ ๋˜๋Š” ๊ฒƒ์ธ์ง€, ์ž˜ ์ž‘๋™๋˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉฐ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋‚จ๊ธฐ๋ฉด์„œ ์ฝ”๋“œ์˜ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ฌ์•„๋†“์€ ์ฝ”๋ฉ˜ํŠธ๋ฅผ ๋ณด๊ณ  ์ด๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค๋ฉด, ์ฝ”๋ฉ˜ํŠธ ํ•˜๋‹จ์— ์žˆ๋Š” Resolve conversation์„ ๋ˆŒ๋Ÿฌ ์ปค๋ฉ˜ํŠธ ์ง„ํ–‰์‚ฌํ•ญ์„ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ, Github์—์„œ ์ œ๊ณตํ•˜๋Š” Suggestion ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์–ด๋–ป๊ฒŒ ๋ฐ”๋€Œ์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋Š”์ง€ ์ œ์•ˆํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. Github์—์„œ๋Š” ์ œ์•ˆํ•œ ์ฝ”๋“œ์™€ ์› ์ฝ”๋“œ ๊ฐ„ diff๋ฅผ ๋ณด์—ฌ์ฃผ๋ฉฐ ์–ด๋–ป๊ฒŒ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š”์ง€ ํ•œ๋ˆˆ์— ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ทฐ ํ™”๋ฉด์—์„œ ์ปค๋ฉ˜ํŠธ๋ฅผ ๋‹ฌ๊ณ  ๋ฆฌ๋ทฐ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๋ ค๋ฉด, Review changes ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ฆฌ๋ทฐ๋ฅผ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ ์ดํ‰์„ ์ปค๋ฉ˜ํŠธ๋ฅผ ๋‹ฌ๊ณ  Submit review๋ฅผ ๋ˆ„๋ฅด๋ฉด ๋ฆฌ๋ทฐ๊ฐ€ ๋งˆ๋ฌด๋ฆฌ๋˜๋Š”๋ฐ, ๋ฒ„ํŠผ ์ƒ๋‹จ์— ์žˆ๋Š” Select Toggle์„ ํ†ตํ•ด ๋ฆฌ๋ทฐ ์ƒํ™ฉ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Comment : ์Šน์ธ๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ์ผ๋ฐ˜์ ์ธ ์ปค๋ฉ˜ํŠธ๋ฅผ ํ•  ๋•Œ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • Approve : Comment์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์Šน์ธ์„ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ๋จธ์ง€ํ•ด๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ์˜๊ฒฌ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • Request changes : ๋ง ๊ทธ๋Œ€๋กœ ๋ณ€๊ฒฝ์„ ์š”์ฒญํ•˜๋Š” ๊ฒƒ์œผ๋กœ, ์Šน์ธ์„ ๊ฑฐ๋ถ€ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋จธ์ง€ํ•˜๋ฉด ์•ˆ๋œ๋‹ค๋Š” ์˜๊ฒฌ์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์ด๊ธฐ๋„ ํ•˜์ฃ .

์ด ๋ฆฌ๋ทฐ ์ƒํ™ฉ์ด ์ค‘์š”ํ•œ ์ด์œ ๋Š” ์ด ๋ฆฌ๋ทฐ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋จธ์ง€๋ฅผ ํ• ์ง€ ํ•˜์ง€ ์•Š์„์ง€ ๊ฒฐ์ •ํ•˜๋Š” ํ™•์ธ์ ˆ์ฐจ ์ค‘ ํ•˜๋‚˜์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์„ธํŒ…์— ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ๋ธŒ๋žœ์น˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์„ค์ •์ด ์žˆ๋Š”๋ฐ, Approve๋ฅผ ๋ฐ›์•„์•ผ์ง€ ๋จธ์ง€๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„๋Š” 1๋ช…์˜ Approve๋ฅผ ๋ฐ›์œผ๋ฉด ๋จธ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜์–ด์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ๋ช…์„ ์„ค์ •ํ•ด ์ผ์ • ๊ฐœ์ˆ˜ ์ด์ƒ์˜ Approve๋ฅผ ๋ฐ›์•„์•ผ์ง€ ๋จธ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ’ก Draft PR์ด๋ผ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ๋Š”๋ฐ, ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „ ์ž„์‹œ๋กœ PR์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๋ž˜๋Œ€๋กœ ์ง„ํ–‰๋œ๋‹ค๋ฉด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „๊นŒ์ง€๋Š” ์ฝ”๋“œ๋ฅผ ์–ผ๋งˆ๋‚˜ ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์• ๋งคํ•œ๋ฐ, Draft PR๋กœ ์˜ฌ๋ ค๋†“์œผ๋ฉด ์ž‘์—…์ด ์™„๋ฃŒ๋˜๊ธฐ ์ „ PR ํŽ˜์ด์ง€์— ์ฝ”๋“œ ํ˜„ํ™ฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด ๋”์šฑ ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค!

๐Ÿƒ Actions

์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋˜ ํ™•์ธํ•˜๋Š” ์ ˆ์ฐจ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์•ก์…˜์ž…๋‹ˆ๋‹ค. ์ตœ๊ทผ ๋“ค์–ด CI/CD, Devops๋“ฑ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฒดํฌ, ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ์˜ ์ž๋™ํ™”์˜ ํ•„์š”์„ฑ์ด ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ๋Š”๋ฐ, Github์—์„œ๋Š” ์•ก์…˜์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ž๋™ํ™”๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ œ๊ฐ€ ์ง„ํ–‰ ์ค‘์ธ React ํ”„๋กœ์ ํŠธ์—์„  ESLint๊ฐ€ ์ง€์ผœ์กŒ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋Œ๋ฆฌ๋ฉฐ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์ž‘์—…์„ ์•ก์…˜์„ ํ†ตํ•ด ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. PR์—์„œ ๋‹ค๋ค˜๋˜ ๋ธŒ๋žœ์น˜ ์„ค์ • ์ค‘ Require status checks to pass before merging ์„ ์„ค์ •ํ•˜๋ฉด ์•ก์…˜์„ ํ†ต๊ณผํ•ด์•ผ์ง€๋งŒ ๋จธ์ง€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š ์ด ๊ธ€์—์„œ ์•ก์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์–ธ๊ธ‰ํ•œ๋‹ค๋ฉด ํ•œ 3ํŽ˜์ด์ง€ ๋” ๋‚˜์˜ฌ ์ •๋„๋กœ ๋ฐฉ๋Œ€ํ•˜๋ฏ€๋กœ ๋‹ค๋ฃจ์ง„ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘จโ€๐Ÿ’ป ํ˜‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด์ œ, ์ œ๊ฐ€ ํ˜‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ๊ธฐํšํ•  ๋•Œ, ๊ตฌํ˜„ํ•ด์•ผ ํ•  ๊ธฐ๋Šฅ๋“ค์„ ์ด์Šˆ์— ๋“ฑ๋กํ•ด ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. (์ด์Šˆ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ ํ”„๋กœ์ ํŠธ์— ๋“ฑ๋ก๋„ ํ•ฉ๋‹ˆ๋‹ค)
  2. ์ž‘์—…์„ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์ด์Šˆ์˜ Assignee๋ฅผ ์ง€์ •ํ•˜๊ณ  ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  3. develop ๋ธŒ๋žœ์น˜์—์„œ ์ƒˆ๋กœ์šด ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  4. ์ž‘์—…ํ•˜๋‹ค๊ฐ€, develop ๋ธŒ๋žœ์น˜๊ฐ€ (๋‹ค๋ฅธ PR๋กœ) ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๋ฉด ์—…๋ฐ์ดํŠธ๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด develop ๋ธŒ๋žœ์น˜๋ฅผ ๋จธ์ง€ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
  5. ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ด๊ฑฐ๋‚˜ ๋งˆ์น  ๋•Œ PR(๋˜๋Š” Draft PR)์„ ์—ด์–ด ํŒ€์›(๋˜๋Š” ์•ก์…˜)์—๊ฒŒ ํ™•์ธ์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  6. ๋ฆฌ๋ทฐ๋‚˜ ์•ก์…˜์„ ํ†ตํ•ด ์ถฉ๋ถ„ํžˆ ํ™•์ธ๋˜์—ˆ๋‹ค๋ฉด ๋ธŒ๋žœ์น˜๋ฅผ develop์— ๋จธ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  7. ์ดํ›„ ์ถฉ๋ถ„ํžˆ ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด develop์— ๋จธ์ง€๋œ๋‹ค๋ฉด develop์„ master์— ๋จธ์ง€ํ•ด ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก PR์„ ํ†ตํ•ด ๋จธ์ง€๊ฐ€ ๋œ๋‹ค๋ฉด PR ํŽ˜์ด์ง€์—์„œ ๋ธŒ๋žœ์น˜๋ฅผ ์ œ๊ฑฐํ• ์ง€ ๋ฌผ์–ด๋ณด๋Š” ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Git Flow์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ ์ฒ˜๋Ÿผ, ํ•œ๋ฒˆ ๋จธ์ง€ํ•œ ๋ธŒ๋žœ์น˜๋Š” ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์•—, develop ๋ธŒ๋žœ์น˜๋Š” ์ œ๊ฑฐํ•˜๋ฉด ์•ˆ๋˜์š”!

์ œ๊ฐ€ ์ด ๊ธ€์— ์ ์€ ๋ฐฉ์‹์ด ๋ชจ๋ฒ”์ •๋‹ต์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ์œ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ณ , ์ œ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ์„ ๋Œ“๊ธ€์— ๋‹ฌ์•„์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

๐Ÿ“š ์ฐธ๊ณ ๋ฌธ์„œ

profile
์žก๋‹คํ•œ๊ฑฐ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

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

comment-user-thumbnail
2020๋…„ 8์›” 30์ผ

๊น”๋”ํ•˜๊ฒŒ ์ž˜ ์ •๋ฆฌ๋œ ๊ธ€์ด๋„ค์š”! ์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ‘

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2020๋…„ 8์›” 30์ผ

๊ตฟ๊ตฟ! Action์€ ์จ๋ณธ ์  ์—†๋Š”๋ฐ ๋‹ค์Œ์— ์จ๋ด์•ผ๊ฒ ๋„ค์š”! ์†Œ๊ฐœ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2020๋…„ 8์›” 31์ผ

์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2020๋…„ 9์›” 1์ผ

์ง„์งœ ์ •๋ฆฌ ์ž˜ํ•˜์‹ ๊ฑฐ ๊ฐ™์•„์š”!! ๋งŽ์€ ๋„์›€์ด ๋์Šต๋‹ˆ๋‹ค.

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2020๋…„ 9์›” 1์ผ

ํ•œ ์ค„๊ธฐ ๋น›๊ณผ ๊ฐ™์€ ์ง€์‹!

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ
comment-user-thumbnail
2020๋…„ 9์›” 1์ผ

์ข‹์€ ๊ธ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. Github์—์„œ ์ด๋ ‡๊ฒŒ ๋‹ค์–‘ํ•œ ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•œ์ง€ ์ฒ˜์Œ ์•Œ์•˜์–ด์š”. :thumb_up:

๋‹ต๊ธ€ ๋‹ฌ๊ธฐ