# [[Pull Request (PR)]] ## ๐Ÿ“Œ Brief Summary Pull Request(PR)๋Š” ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜(Feature Branch)์—์„œ ์ž‘์—…ํ•œ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜(`main`)๋กœ ๋ณ‘ํ•ฉํ•˜๊ธฐ ์ „์— ํŒ€์›๋“ค์˜ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ํ’ˆ์งˆ ๊ฒ€์ฆ์„ ๊ฑฐ์น˜๋„๋ก ํ•˜๋Š” ํ•ต์‹ฌ ํ˜‘์—… ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค [1-3]. PR์€ ๋‹จ์ˆœํ•œ ์ฝ”๋“œ ๋ณ‘ํ•ฉ ์š”์ฒญ์„ ๋„˜์–ด, ๋™๋ฃŒ์˜ ๊ฒ€ํ† ๋ฅผ ์ด‰์ง„ํ•˜๊ณ  ๋ฒ„๊ทธ๋‚˜ UI ํšŒ๊ท€(regression)๊ฐ€ ์šด์˜ ํ™˜๊ฒฝ์— ๋„๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ’ˆ์งˆ ๊ด€๋ฆฌ์˜ ์ตœ์ข… ๊ด€๋ฌธ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค [3-5]. ์•„์ฃผ ์ž‘์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด๋ผ๋„ ์ผ๊ด€๋˜๊ฒŒ PR์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์€ ํŒ€ ๋‚ด ๊ฑด์ „ํ•œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์Šต๊ด€๊ณผ ๊ทœ์œจ์„ ํ˜•์„ฑํ•˜๋Š” ๋ฐ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค [4]. ## ๐Ÿ“– Core Content * **PR์˜ ํ•ต์‹ฌ ๋ชฉ์ ๊ณผ ๊ตฌ์„ฑ:** PR์€ ์ฝ”๋“œ ๋ฆฌ๋ทฐ์™€ ํ˜‘์—…์ด ์ด๋ฃจ์–ด์ง€๋Š” ์ค‘์‹ฌ ๊ณต๊ฐ„์ž…๋‹ˆ๋‹ค. ์˜ฌ๋ฐ”๋ฅธ PR์€ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋งŒ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ '๋ฌด์—‡์ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€', '์™œ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€' ๋ช…ํ™•ํžˆ ์„œ์ˆ ํ•ด์•ผ ํ•˜๋ฉฐ, UI์— ๋ณ€ํ™”๊ฐ€ ์žˆ๋‹ค๋ฉด ์Šคํฌ๋ฆฐ์ƒท์„ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1]. ๋˜ํ•œ, PR ์ด๋ฆ„์ด๋‚˜ ์„ค๋ช…์— JIRA ๋“ฑ์˜ ํ‹ฐ์ผ“ ID(์˜ˆ: PROJ-123)๋ฅผ ํฌํ•จ์‹œํ‚ค๋ฉด ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์„ ์—ฐ๊ฒฐํ•˜๋Š” ์ถ”์ ์„ฑ(Traceability)์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์–ด, ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋ณ€๊ฒฝ์˜ ๋งฅ๋ฝ์„ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 7]. * **PR ํฌ๊ธฐ ๊ด€๋ฆฌ:** PR์€ ๊ฐ€๊ธ‰์  200์ค„ ์ดํ•˜์˜ ์ž‘์€ ํฌ๊ธฐ๋กœ ์œ ์ง€ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋ณ€๊ฒฝ ์‚ฌํ•ญ(Atomic commit)์—๋งŒ ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค [1, 2, 4]. ๋ฆฌ๋ทฐ์–ด๊ฐ€ ํ•œ ๋ฒˆ์— 2,000์ค„์ด ๋„˜๋Š” ์ฝ”๋“œ๋ฅผ ๊ฐ์‚ฌ(Audit)ํ•˜๋Š” ๊ฒƒ์€ ๋น„ํšจ์œจ์ ์ด๋ฉฐ, ํฌ๊ธฐ๊ฐ€ ์ž‘์€ PR์ผ์ˆ˜๋ก ๋น ๋ฅด๊ณ  ์ฒ ์ €ํ•œ ๊ฒ€ํ† ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค [3]. * **๋ณ‘ํ•ฉ ์ „ ํ•„์ˆ˜ ์กฐ๊ฑด (Safeguards):** PR์„ `main` ๋ธŒ๋žœ์น˜์— ๋ณ‘ํ•ฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์•ˆ์ „์žฅ์น˜๋ฅผ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ธŒ๋žœ์น˜ ๋ณดํ˜ธ(Branch protection) ์„ค์ •์„ ํ†ตํ•ด ์ตœ์†Œ 1๋ช… ์ด์ƒ์˜ ๋™๋ฃŒ ์Šน์ธ(Peer Review)์„ ์š”๊ตฌํ•ฉ๋‹ˆ๋‹ค [1, 2, 4, 8]. ๋˜ํ•œ, ๋ณ‘ํ•ฉ ์ „ CI ํŒŒ์ดํ”„๋ผ์ธ์˜ ๋ชจ๋“  ์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ํ†ต๊ณผํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค [1, 2, 9]. * **์‹œ๊ฐ์  ๋ฆฌ๋ทฐ (Visual Review):** ํ”„๋ก ํŠธ์—”๋“œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ผ๋ฐ˜์ ์ธ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์™ธ์— ์‹œ๊ฐ์  ๋ฆฌ๋ทฐ๊ฐ€ ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. Storybook, Chromatic, Happo์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ CI ํŒŒ์ดํ”„๋ผ์ธ์— ํ†ตํ•ฉํ•˜์—ฌ PR ์ƒ์„ฑ ์‹œ ์ž๋™์œผ๋กœ ์‹œ๊ฐ์  ํšŒ๊ท€ ํ…Œ์ŠคํŠธ(Visual Regression Testing) ๋ฐ ์ ‘๊ทผ์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 10-12]. ์˜๋„์น˜ ์•Š์€ ๋ ˆ์ด์•„์›ƒ ๋ณ€ํ™”๋‚˜ ์ƒ‰์ƒ ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ•˜๋ฉด PR์— ๊ฒฝ๊ณ (Badge)๊ฐ€ ํ‘œ์‹œ๋˜์–ด ๋ณ‘ํ•ฉ์„ ๋ง‰๊ณ  ์ˆ˜๋™ ๊ฒ€ํ† ๋ฅผ ์œ ๋„ํ•ฉ๋‹ˆ๋‹ค [5, 13]. * **๋ณ‘ํ•ฉ ์ „๋žต๊ณผ ์‚ฌํ›„ ์ฒ˜๋ฆฌ:** PR ๋ฆฌ๋ทฐ๊ฐ€ ์™„๋ฃŒ๋˜์–ด ๋ณ‘ํ•ฉํ•  ๋•Œ๋Š” ์ „์ฒด ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์Šค์ฟผ์‹œ ๋ณ‘ํ•ฉ(Squash Merge)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค [1, 8, 14]. ๋ณ‘ํ•ฉ์ด ๋๋‚œ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋Š” ์ €์žฅ์†Œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ฆ‰์‹œ(๋˜๋Š” ์ž๋™) ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [1, 4, 8, 14]. ## โš–๏ธ Trade-offs & Caveats * **์ž‘์—… ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€:** ๋ชจ๋“  ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ(์‹ฌ์ง€์–ด ์•„์ฃผ ๋‹จ์ˆœํ•œ ์˜คํƒ€ ์ˆ˜์ • ๋“ฑ)์— ๋Œ€ํ•ด์„œ๋„ PR์„ ์ƒ์„ฑํ•˜๊ณ  ๋™๋ฃŒ์˜ ๋ฆฌ๋ทฐ ๋ฐ CI ๊ฒ€์‚ฌ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋ฏ€๋กœ, ๊ทน๋„๋กœ ๋น ๋ฅธ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์ ˆ์ฐจ๊ฐ€ ํ”„๋กœ์„ธ์Šค ์˜ค๋ฒ„ํ—ค๋“œ๋กœ ์ž‘์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ์†๋„๋ฅผ ๋Šฆ์ถœ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [4, 15]. * **๋ฆฌ๋ทฐ ์ง€์—ฐ ๋ณ‘๋ชฉ ํ˜„์ƒ:** PR์˜ ํฌ๊ธฐ๋ฅผ ์ž‘๊ฒŒ ์ชผ๊ฐœ์ง€ ์•Š๊ณ  ๋ฐฉ์น˜ํ•˜์—ฌ ๊ฑฐ๋Œ€ํ•œ PR์ด ์ƒ์„ฑ๋  ๊ฒฝ์šฐ, ๋ฆฌ๋ทฐ์–ด๊ฐ€ ์ฝ”๋“œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ์Šน์ธํ•˜๋Š” ๋ฐ ๋„ˆ๋ฌด ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜๋ฉฐ ๋ฆฌ๋ทฐ์˜ ์งˆ์ด ํ•˜๋ฝํ•ฉ๋‹ˆ๋‹ค [3]. * **๋ณ‘ํ•ฉ ์ถฉ๋Œ(Merge Conflicts) ์œ„ํ—˜:** ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋ฅผ ์งง๊ฒŒ ์œ ์ง€(Short-lived)ํ•˜์ง€ ์•Š๊ณ  ์˜ค๋žซ๋™์•ˆ ์ž‘์—…ํ•œ ๋’ค ๋’ค๋Šฆ๊ฒŒ PR์„ ์—ด๊ฒŒ ๋˜๋ฉด, ๊ทธ ์‚ฌ์ด `main` ๋ธŒ๋žœ์น˜์— ์Œ“์ธ ๋‹ค๋ฅธ ํŒ€์›๋“ค์˜ ์ฝ”๋“œ์™€ ํฌ๊ฒŒ ์—‡๊ฐˆ๋ฆฌ๊ฒŒ ๋˜์–ด ํ•ด๊ฒฐํ•˜๊ธฐ ์–ด๋ ค์šด ๋Œ€๊ทœ๋ชจ ๋ณ‘ํ•ฉ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 14-16]. ## ๐Ÿ”— Knowledge Connections ### Related Concepts #### [ํ˜‘์—… ๋ฐ ๋ธŒ๋žœ์นญ ์ „๋žต] - [[Feature Branch Workflow]] - ์—ฐ๊ฒฐ ์ด์œ : PR์€ ๋…๋ฆฝ๋œ ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ์ž‘์—…์„ ๋งˆ์นœ ํ›„ `main` ๋ธŒ๋žœ์น˜๋กœ ํ†ตํ•ฉํ•˜๊ธฐ ์œ„ํ•ด ํ•„์ˆ˜์ ์œผ๋กœ ๊ฑฐ์น˜๋Š” ํ”„๋กœ์„ธ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [2, 17, 18]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ๋ธŒ๋žœ์น˜๋ฅผ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌํ•˜๊ณ  ์งง์€ ์ฃผ๊ธฐ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ์–ด๋–ป๊ฒŒ PR ๊ณผ์ •์—์„œ์˜ ์ถฉ๋Œ์„ ์ค„์ด๊ณ  ํ˜‘์—… ํšจ์œจ์„ ๋†’์ด๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 15, 18]. #### [์ฝ”๋“œ ํ’ˆ์งˆ ๋ฐ ๊ฒ€์ฆ ๋„๊ตฌ] - [[Visual Regression Testing]] - ์—ฐ๊ฒฐ ์ด์œ : ํ”„๋ก ํŠธ์—”๋“œ ์ฝ”๋“œ์˜ PR ๋ณ‘ํ•ฉ ์ „ ๋‹จ๊ณ„์—์„œ UI ๋ณ€๊ฒฝ์ด๋‚˜ ๋ ˆ์ด์•„์›ƒ ๋ถ•๊ดด๋ฅผ ์žก์•„๋‚ด๋Š” ํ•ต์‹ฌ์ ์ธ ์ž๋™ํ™” ํ…Œ์ŠคํŠธ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [5, 10]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: Happo๋‚˜ Chromatic์ด ์–ด๋–ป๊ฒŒ PR ์›Œํฌํ”Œ๋กœ์šฐ์— ๊ฒฐํ•ฉ๋˜์–ด ๋ฆฌ๋ทฐ์–ด์˜ ๋ถ€๋‹ด์„ ๋œ๊ณ  ์‹œ๊ฐ์  ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๋Š”์ง€ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 11]. - [[Squash Merge]] - ์—ฐ๊ฒฐ ์ด์œ : PR์„ ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์— ์Šน์ธ ๋ฐ ๋ณ‘ํ•ฉํ•  ๋•Œ ๋ณต์žกํ•œ ์ค‘๊ฐ„ ์ปค๋ฐ‹ ๋‚ด์—ญ์„ ํ•˜๋‚˜๋กœ ์ •๋ฆฌํ•˜์—ฌ Git ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๋Š” ๋ณ‘ํ•ฉ ์ „๋žต์ž…๋‹ˆ๋‹ค [1, 8, 14]. - ์ด ๊ฐœ๋…์„ ํ†ตํ•ด ๋” ๊นŠ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„: ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์ž์ž˜ํ•œ ์ปค๋ฐ‹์ด PR ๋‹จ์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์–ด๋–ป๊ฒŒ ํ•˜๋‚˜์˜ ์˜๋ฏธ ์žˆ๋Š” ๋‹จ์œ„๋กœ ์••์ถ•๋˜๋Š”์ง€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 8]. ### Deeper Research Questions - ๋Œ€๊ทœ๋ชจ ํŒ€์—์„œ PR ๋ฆฌ๋ทฐ์˜ ์ฒ ์ €ํ•จ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ๋ณ‘ํ•ฉ ์ง€์—ฐ ์‹œ๊ฐ„(Lead Time)์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ์›Œํฌํ”Œ๋กœ์šฐ ์ž๋™ํ™” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€? - ๊ทนํžˆ ์‚ฌ์†Œํ•œ ๋ณ€๊ฒฝ(์˜คํƒ€ ์ˆ˜์ • ๋“ฑ)์— ๋Œ€ํ•ด PR ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋ฉ”์ธ ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ปค๋ฐ‹(Direct push)ํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ๋‘๋Š” ๊ฒƒ์ด ์žฅ๊ธฐ์ ์œผ๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค ์•ˆ์ •์„ฑ์— ์–ด๋–ค ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š”๊ฐ€? - Happo๋‚˜ Chromatic ๊ฐ™์€ ์‹œ๊ฐ์  ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋“ค์„ CI ํŒŒ์ดํ”„๋ผ์ธ์˜ PR ์ฒดํฌ์— ์—ฐ๋™ํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ํ…Œ์ŠคํŠธ ์‹คํ–‰ ์‹œ๊ฐ„ ์ฆ๊ฐ€์™€ ๋น„์šฉ ๋ฌธ์ œ๋Š” ์–ด๋–ป๊ฒŒ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋Š”๊ฐ€? - PR ๋‹จ๊ณ„์—์„œ ์‹ฌ๊ฐํ•œ ๋ณ‘ํ•ฉ ์ถฉ๋Œ(Merge Conflict)์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋ฆฌ๋ทฐ์–ด์—๊ฒŒ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•œ ํšจ๊ณผ์ ์ธ Git Rebase ์ „๋žต์€ ๋ฌด์—‡์ธ๊ฐ€? - PR ์ด๋ฆ„๊ณผ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์— Ticket ID(์˜ˆ: JIRA) ์ž‘์„ฑ์„ ๊ฐ•์ œํ•˜๋Š” ์ •์ฑ…์ด ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์›์ธ ์ถ”์ ๊ณผ ๋กค๋ฐฑ ํ”„๋กœ์„ธ์Šค์— ์–ด๋–ป๊ฒŒ ๊ธฐ์—ฌํ•˜๋Š”๊ฐ€? ### Practical Application Contexts - **Implementation:** ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์ด๋‚˜ ๋ฒ„๊ทธ ํ”ฝ์Šค ์ž‘์—… ์‹œ `main` ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ํ‘ธ์‹œํ•˜์ง€ ์•Š๊ณ , ์ƒˆ ๋ธŒ๋žœ์น˜๋ฅผ ๋งŒ๋“ค์–ด ์ž‘์—…์„ ์™„๋ฃŒํ•œ ํ›„ PR์„ ์—ด์–ด ๋ฌด์—‡์„ ๋ฐ”๊ฟจ๋Š”์ง€ ์Šคํฌ๋ฆฐ์ƒท๊ณผ ํ•จ๊ป˜ ์ƒ์„ธํžˆ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค [1, 14]. - **System Design:** GitHub ๋“ฑ์— Branch Protection Rule์„ ์„ค์ •ํ•˜์—ฌ, PR์ด 1๋ช… ์ด์ƒ์˜ ์Šน์ธ์„ ๋ฐ›๊ณ  ๋ชจ๋“  ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ๋ฐ CI ๋ฆฐํŠธ ๊ฒ€์‚ฌ๋ฅผ ํ†ต๊ณผํ•ด์•ผ๋งŒ ๋ณ‘ํ•ฉ(Merge) ๋ฒ„ํŠผ์ด ํ™œ์„ฑํ™”๋˜๋„๋ก ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค [1, 19]. - **Operation / Maintenance:** ์šด์˜ ์ค‘ ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ณผ๊ฑฐ PR ๊ธฐ๋ก๊ณผ ํฌํ•จ๋œ Ticket ID๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ, ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ์‚ฌํ•ญ์— ์˜ํ•ด ์ถ”๊ฐ€๋˜์—ˆ๊ณ  ๋ˆ„๊ฐ€ ๋ฆฌ๋ทฐํ–ˆ๋Š”์ง€ ์‹ ์†ํžˆ ๋งฅ๋ฝ์„ ํŒŒ์•…ํ•ฉ๋‹ˆ๋‹ค [6, 7]. - **Learning Path:** Git์„ ํ•™์Šตํ•˜๋Š” ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋“ค์€ ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๋•Œ๋„ `main` ๋ธŒ๋žœ์น˜์— ์ง์ ‘ ์ปค๋ฐ‹ํ•˜๋Š” ๋Œ€์‹  PR์„ ์—ด๊ณ  ์Šค์Šค๋กœ ์ฝ”๋“œ ๋ฆฌ๋ทฐ๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์„ ์—ฐ์Šตํ•˜์—ฌ ์‹ค๋ฌด ํ˜‘์—… ํ‘œ์ค€์— ์ต์ˆ™ํ•ด์ง‘๋‹ˆ๋‹ค [4, 18]. - **My Project Relevance:** ํ˜„์žฌ ์ง„ํ–‰ ์ค‘์ธ ์†Œ๊ทœ๋ชจ ํŒ€ ํ”„๋กœ์ ํŠธ์— Feature Branch์™€ ๊ฒฐํ•ฉ๋œ ๊ฐ€๋ฒผ์šด PR ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ๋„์ž…ํ•˜๊ณ , '์ž‘์€ PR ํฌ๊ธฐ ์œ ์ง€', 'Squash Merge ์‚ฌ์šฉ', '๋ณ‘ํ•ฉ ํ›„ ๋ธŒ๋žœ์น˜ ์‚ญ์ œ' ๊ทœ์œจ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค [8, 15, 16]. ### Adjacent Topics - [[Continuous Integration (CI)]] - ํ™•์žฅ ๋ฐฉํ–ฅ: PR์ด ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์ฝ”๋“œ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ, ๋ฆฌ๋ทฐ์–ด๊ฐ€ ๋กœ์ง ๊ฒ€ํ† ์—๋งŒ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ์ž๋™ํ™” ์ธํ”„๋ผ๋กœ ํ™•์žฅ ํ•™์Šต. - [[Code Review]] - ํ™•์žฅ ๋ฐฉํ–ฅ: PR์ด๋ผ๋Š” ๊ณต๊ฐ„ ๋‚ด์—์„œ ํŒ€์› ๊ฐ„์— ํšจ๊ณผ์ ์ด๊ณ  ๊ฑด์„ค์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ณ ๋ฐ›๋Š” ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ๊ธฐ์ˆ ๊ณผ ๋ฆฌ๋ทฐ ๋ฌธํ™”๋ฅผ ์กฐ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ™•์žฅ ํ•™์Šต. --- *Last updated: 2026-04-30*