# ๐Ÿท๏ธ Git ์šด์˜ ๋ฐ ํ†ตํ•ฉ ์—…๋ฐ์ดํŠธ ๊ด€๋ฆฌ ๊ทœ์น™ ์ด ๋ฌธ์„œ๋Š” Smart IMS ํ”Œ๋žซํผ์˜ **Git ์šด์˜ ์ •์ฑ…**, **ํƒœ๊ทธ ์ž‘์„ฑ ๊ทœ์น™**, ๊ทธ๋ฆฌ๊ณ  **์šด์˜ ์„œ๋ฒ„ ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•**์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. --- ## 1. ํƒœ๊ทธ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ๊ทœ์น™ (Changelog ์ž๋™ ์ƒ์„ฑ) ํ”Œ๋žซํผ์˜ ์—…๋ฐ์ดํŠธ ์—”์ง„์€ ํƒœ๊ทธ ๋ฉ”์‹œ์ง€์˜ **๋จธ๋ฆฌ๋ง(Prefix)**๊ณผ **๋ฆฌ์ŠคํŠธ ๊ธฐํ˜ธ(`-`, `*`)**๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ด€๋ฆฌ ํŽ˜์ด์ง€์˜ ์—…๋ฐ์ดํŠธ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ### ๐Ÿ“‹ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ ```text [TYPE] ์—…๋ฐ์ดํŠธ ์ œ๋ชฉ (ํ•œ ์ค„ ์š”์•ฝ) - ์ƒ์„ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ 1 - ์ƒ์„ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ 2 * ์ƒ์„ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ 3 ``` ### ๐Ÿท๏ธ ์—…๋ฐ์ดํŠธ ํƒ€์ž… (TYPE) ์ •์˜ | ํ‚ค์›Œ๋“œ | ์—…๋ฐ์ดํŠธ ์œ ํ˜• | ์‹œ๊ฐ์  ํ‘œ์‹œ | ๋น„๊ณ  | |:--- |:--- |:--- |:--- | | `[URGENT]` | **๊ธด๊ธ‰/๋ณด์•ˆ** | ๋นจ๊ฐ„์ƒ‰ ๋ฐฐ๋„ˆ | ์ตœ์šฐ์„  ์—…๋ฐ์ดํŠธ ๊ถŒ์žฅ | | `[HOTFIX]` | **๊ธด๊ธ‰ ์ˆ˜์ •** | ๋นจ๊ฐ„์ƒ‰ ๋ฐฐ๋„ˆ | ๋ฒ„๊ทธ ์ฆ‰์‹œ ์ˆ˜์ • ๊ฑด | | `[FEATURE]` | **๊ธฐ๋Šฅ ์ถ”๊ฐ€** | ๋‚จ์ƒ‰(Indigo) | ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๋„์ž… | | `[FIX]` | **์ผ๋ฐ˜ ์ˆ˜์ •** | ํšŒ์ƒ‰(Slate) | ์ผ๋ฐ˜์ ์ธ ๋ฒ„๊ทธ ์ˆ˜์ • | | `[PATCH]` | **ํŒจ์น˜/๋ณด์ •** | ํšŒ์ƒ‰(Slate) | ๋งˆ์ด๋„ˆ ํ’ˆ์งˆ ๊ฐœ์„  | --- ## 2. ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์ ˆ์ฐจ (Local โ†’ Remote) ### STEP 1: ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‹œ ```powershell git add . git commit -m "๋ฆด๋ฆฌ์ฆˆ ์ค€๋น„: v0.3.5 ํŒจ์น˜" git push origin main ``` ### STEP 2: ์–ด๋…ธํ…Œ์ดํ‹ฐ๋“œ ํƒœ๊ทธ(Annotated Tag) ์ƒ์„ฑ ์‹œ์Šคํ…œ ์—”์ง„์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ์œผ๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ `-a` ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ```powershell git tag -a v0.3.5 -m "[PATCH] ์‹œ์Šคํ…œ ์•ˆ์ •ํ™” ํŒจ์น˜ - ์›๊ฒฉ ํƒœ๊ทธ ๋™๊ธฐํ™” ๋กœ์ง ๊ฐ•ํ™” - API ์บ์‹œ ๋ฐฉ์ง€ ํƒ€์ž„์Šคํƒฌํ”„ ๋„์ž…" ``` ### STEP 3: ์›๊ฒฉ ์ €์žฅ์†Œ์— ํƒœ๊ทธ ํ‘ธ์‹œ ```powershell git push origin v0.3.5 ``` --- ## 3. ์šด์˜ ์„œ๋ฒ„ ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ• (Manual Update) ์›น UI์˜ ์ž๋™ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ฑฐ๋‚˜ ์ง์ ‘ ์„œ๋ฒ„์—์„œ ์ œ์–ดํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ### STEP 1: ์ตœ์‹  ํƒœ๊ทธ ์ •๋ณด ๊ฐ•์ œ ๋™๊ธฐํ™” ๋กœ์ปฌ ํƒœ๊ทธ ์บ์‹œ์™€ ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ์‹ค์ œ ํƒœ๊ทธ๋ฅผ ์ผ์น˜์‹œํ‚ต๋‹ˆ๋‹ค. ```powershell git fetch origin +refs/tags/*:refs/tags/* --force --prune --prune-tags ``` ### STEP 2: ๋Œ€์ƒ ๋ฒ„์ „์œผ๋กœ ์ฒดํฌ์•„์›ƒ ```powershell # ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ๋ฌด์‹œํ•˜๊ณ  ๊ฐ•์ œ๋กœ ํŠน์ • ํƒœ๊ทธ ๋ฒ„์ „์œผ๋กœ ์ „ํ™˜ git checkout -f v0.3.5 ``` ### STEP 3: ์˜์กด์„ฑ ์„ค์น˜ ๋ฐ ๋นŒ๋“œ (Root ๊ฒฝ๋กœ) ```powershell npm install npm run build ``` ### STEP 4: ์„œ๋ฒ„ ๋ชจ๋“ˆ ์˜์กด์„ฑ ์„ค์น˜ ๋ฐ ์žฌ์‹œ์ž‘ (Server ๊ฒฝ๋กœ) ```powershell cd server npm install pm2 reload smartims-api ``` --- ## 4. ์œ ์šฉํ•œ Git ๋ช…๋ น์–ด ๋ ˆํผ๋Ÿฐ์Šค * **ํƒœ๊ทธ ๋ชฉ๋ก ํ™•์ธ**: `git tag -l` * **์ตœ์‹  ํƒœ๊ทธ ์ •๋ณด ํ™•์ธ**: `git describe --tags --abbrev=0` * **์›๊ฒฉ ํƒœ๊ทธ ๊ฐ•์ œ ๋ฎ์–ด์“ฐ๊ธฐ (์ˆ˜์ • ์‹œ)**: ```powershell git tag -a v0.3.5 -f -m "์ˆ˜์ •๋œ ๋ฉ”์‹œ์ง€..." git push origin v0.3.5 -f ``` --- ## ๐Ÿ’ก ์ฃผ์˜์‚ฌํ•ญ 1. **๋นŒ๋“œ ํ™•์ธ**: ์šด์˜ ์„œ๋ฒ„์—์„œ ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ ์‹œ `npm run build` ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ์—†๋Š”์ง€ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 2. **๊ถŒํ•œ ์ฐจ์ด**: ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ ์‹œ ํŒŒ์ผ ๊ถŒํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ฐ€๊ธ‰์  ์„œ๋น„์Šค ์‹คํ–‰ ๊ณ„์ •(์˜ˆ: `sokuree`)์œผ๋กœ ์ง„ํ–‰ํ•˜์„ธ์š”. 3. **No-Cache**: ์—…๋ฐ์ดํŠธ ํ›„ ๋ธŒ๋ผ์šฐ์ €์— ์ฆ‰์‹œ ๋ฐ˜์˜๋˜์ง€ ์•Š์œผ๋ฉด ์„œ๋ฒ„์˜ `pm2 reload`๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.