--- id: P-REINFORCE-AUTO-F69A27 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - Git Hooks" --- # [[Git Hooks|Git Hooks]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Git Hooks๋Š” Git ์›Œํฌํ”Œ๋กœ์˜ ํŠน์ • ์ด๋ฒคํŠธ(commit, push, merge ๋“ฑ)๊ฐ€ ๋ฐœ์ƒํ•  ๋•Œ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค [1-3]. ์ฃผ๋กœ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ปค๋ฐ‹ํ•˜๊ฑฐ๋‚˜ ํ‘ธ์‹œํ•˜๊ธฐ ์ง์ „์— ๋ฆฐํŠธ(Lint), ์ฝ”๋“œ ํฌ๋งทํŒ…, ํ…Œ์ŠคํŠธ ๋“ฑ์„ ์‹คํ–‰ํ•˜์—ฌ ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ ํ€„๋ฆฌํ‹ฐ๋ฅผ ์ผ๊ด€๋˜๊ฒŒ ์œ ์ง€ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **์œ„์น˜ ๋ฐ ๊ตฌ๋™ ๋ฐฉ์‹** ๊ธฐ๋ณธ์ ์œผ๋กœ Git Hook ์Šคํฌ๋ฆฝํŠธ๋“ค์€ ํ”„๋กœ์ ํŠธ์˜ `.git/hooks/` ํด๋”์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค [3, 6]. Git์€ `core.hooksPath`๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ๋กœ์˜ ์Šคํฌ๋ฆฝํŠธ๋“ค์„ ํ™•์ธํ•˜์—ฌ ํŠน์ • Git ๋ช…๋ น์ด ์‹คํ–‰๋˜๊ธฐ ์ „ํ›„์— ์ด๋ฅผ ํ˜ธ์ถœํ•˜๋ฉฐ, ์‹คํ–‰ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋˜์ง€ ์•Š์€ Hook์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค [3]. * **๋ฒ„์ „ ๊ด€๋ฆฌ์˜ ํ•œ๊ณ„์™€ ํ•ด๊ฒฐ์ฑ…** `.git/hooks/` ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ๋ฒ„์ „ ๊ด€๋ฆฌ(Version Control) ์‹œ์Šคํ…œ์— ์˜ํ•ด ์ถ”์ ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ƒˆ๋กœ์šด ํŒ€์›์—๊ฒŒ ์„ค์ •์ด ์ž๋™์œผ๋กœ ๊ณต์œ ๋˜์ง€ ์•Š์œผ๋ฉฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋‹ค์‹œ ํด๋ก ํ•  ๋•Œ๋งˆ๋‹ค ์„ค์ •์ด ์œ ์‹ค๋˜๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค [6]. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์—์„œ๋Š” `Husky`์™€ ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ๋„์ž…ํ•˜์—ฌ Hook ์Šคํฌ๋ฆฝํŠธ๋ฅผ `.husky/`์™€ ๊ฐ™์ด ์ถ”์  ๊ฐ€๋Šฅํ•œ ํด๋”์—์„œ ๊ด€๋ฆฌํ•˜๋„๋ก `core.hooksPath` ์„ค์ •์„ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค [6, 7]. * **์ฃผ์š” Client-side Hooks ์ข…๋ฅ˜** * **`pre-commit`**: ์ปค๋ฐ‹์ด ์ƒ์„ฑ๋˜๊ธฐ ์ง์ „์— ์‹คํ–‰๋˜๋ฉฐ ์Šคํ…Œ์ด์ง•๋œ ํŒŒ์ผ์˜ ํฌ๋งทํŒ…์ด๋‚˜ ๋ฆฐํŠธ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค [1, 2, 8]. ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, `git commit --no-verify` ๋ช…๋ น์„ ํ†ตํ•ด ์šฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [8, 9]. * **`prepare-commit-msg`**: ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํŽธ์ง‘๊ธฐ๊ฐ€ ์—ด๋ฆฌ๊ธฐ ์ „์— ์‹คํ–‰๋˜์–ด ๋ฉ”์‹œ์ง€ ํ…œํ”Œ๋ฆฟ ์‚ฝ์ž… ๋“ฑ์„ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์šฐํšŒํ•  ์ˆ˜ ์—†๋Š” ํŠน์ˆ˜ํ•œ Hook์ž…๋‹ˆ๋‹ค [1, 8]. * **`commit-msg`**: ์ž‘์„ฑ๋œ ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ํ˜•์‹์„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌํ•˜๋Š” ๋ฐ ์“ฐ์ž…๋‹ˆ๋‹ค [1, 2, 8]. * **`post-commit`**: ์ปค๋ฐ‹์ด ์™„๋ฃŒ๋œ ํ›„ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค [1]. * **`pre-push`**: ์›๊ฒฉ ์ €์žฅ์†Œ์— ํ‘ธ์‹œ(push)๋˜๊ธฐ ์ง์ „์— ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค [2, 8, 10]. ์ƒ๋Œ€์ ์œผ๋กœ ์‹คํ–‰ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ์ „์ฒด ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ์‹คํ–‰์ด๋‚˜ ๋นŒ๋“œ ๊ฒ€์ฆ ์ž‘์—…์ด ์ด๊ณณ์— ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค [9, 11]. * **`post-merge`**: ๋ณ‘ํ•ฉ(merge) ์ž‘์—…์ด ์™„๋ฃŒ๋œ ํ›„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค [2]. * **์ตœ์ ํ™” ๋ฐฉ๋ฒ•๋ก  (Lint-staged ๊ฒฐํ•ฉ)** `pre-commit` Hook์—์„œ ์ „์ฒด ํ”„๋กœ์ ํŠธ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ESLint๋‚˜ Prettier๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ค ๊ฐœ๋ฐœ์ž๋“ค์˜ ๋ถˆ๋งŒ์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [6, 9]. ๋”ฐ๋ผ์„œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜์—ฌ ์ปค๋ฐ‹ ๋Œ€๊ธฐ ์ƒํƒœ๊ฐ€ ๋œ ํŒŒ์ผ(Staged files)์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฆฐํŠธ ๋ฐ ํฌ๋งทํŒ… ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋„๋ก `lint-staged`๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ๊ฒ€์‚ฌ ์‹œ๊ฐ„์„ ํฌ๊ฒŒ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 6, 12, 13]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** `[[Husky|Husky]]`, `[[lint-staged|lint-staged]]`, `[[ESLint|ESLint]]`, `[[Prettier|Prettier]]` - **Projects/Contexts:** `[[CI_CD แ„‘แ…กแ„‹แ…ตแ„‘แ…ณแ„…แ…กแ„‹แ…ตแ†ซ (CI_CD Pipelines)|CI/CD ํŒŒ์ดํ”„๋ผ์ธ (CI/CD Pipelines)]]`, `[[แ„แ…ฉแ„ƒแ…ณ แ„‘แ…ฎแ†ทแ„Œแ…ตแ†ฏ แ„€แ…ชแ†ซแ„…แ…ต แ„†แ…ตแ†พ แ„Œแ…กแ„ƒแ…ฉแ†ผแ„’แ…ช (Code Quality Management and Automation)|์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ ๋ฐ ์ž๋™ํ™” (Code Quality Management and Automation)]]` - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด Git Hook์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ•์ œ๋กœ ์šฐํšŒ(`--no-verify` ๋“ฑ)ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ ˆ๋Œ€์ ์ด๊ณ  ์™„๋ฒฝํ•œ ๊ฐ•์ œ ์ˆ˜๋‹จ์ด ๋  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Hook์€ ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๋น ๋ฅธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋„๊ตฌ๋กœ ์ทจ๊ธ‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ตœ์ข…์ ์ธ ๋ณด์•ˆ ๋ฐ ํ’ˆ์งˆ ๊ฒ€์ฆ์˜ ๊ถŒํ•œ์€ ํ•ญ์ƒ CI(์ง€์†์  ํ†ตํ•ฉ) ์„œ๋ฒ„๊ฐ€ ๋‹ด๋‹นํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค [8, 14, 15]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/Git Hooks.md ---