# ๐Ÿท๏ธ Git ์šด์˜ ๋ฐ ํ†ตํ•ฉ ์—…๋ฐ์ดํŠธ ๊ด€๋ฆฌ ๊ทœ์น™ ์ด ๋ฌธ์„œ๋Š” Smart IMS ํ”Œ๋žซํผ์˜ **Git ์šด์˜ ์ •์ฑ…**, **ํƒœ๊ทธ ์ž‘์„ฑ ๊ทœ์น™**, ๊ทธ๋ฆฌ๊ณ  **์šด์˜ ์„œ๋ฒ„ ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ ๋ฐฉ๋ฒ•**์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. --- ## 1. ํƒœ๊ทธ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ ๊ทœ์น™ (Changelog ์ž๋™ ์ƒ์„ฑ) ํ”Œ๋žซํผ์˜ ์—…๋ฐ์ดํŠธ ์—”์ง„์€ ํƒœ๊ทธ ๋ฉ”์‹œ์ง€์˜ **๋จธ๋ฆฌ๋ง(Prefix)**๊ณผ **๋ฆฌ์ŠคํŠธ ๊ธฐํ˜ธ(`-`, `*`)**๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๊ด€๋ฆฌ ํŽ˜์ด์ง€์˜ ์—…๋ฐ์ดํŠธ ํžˆ์Šคํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ### ๐Ÿ“‹ ๋ฉ”์‹œ์ง€ ๊ตฌ์กฐ ```text [TYPE] ์—…๋ฐ์ดํŠธ ์ œ๋ชฉ (ํ•œ ์ค„ ์š”์•ฝ) - ์ƒ์„ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ 1 - ์ƒ์„ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ 2 * ์ƒ์„ธ ๋ณ€๊ฒฝ ๋‚ด์šฉ 3 ``` ### ๐Ÿท๏ธ ์—…๋ฐ์ดํŠธ ํƒ€์ž… (TYPE) ์ •์˜ | ํ‚ค์›Œ๋“œ | ์—…๋ฐ์ดํŠธ ์œ ํ˜• | ์‹œ๊ฐ์  ํ‘œ์‹œ | ๋น„๊ณ  | |:--- |:--- |:--- |:--- | | `[URGENT]` | **๊ธด๊ธ‰/๋ณด์•ˆ** | ๋นจ๊ฐ„์ƒ‰ ๋ฐฐ๋„ˆ | ์ตœ์šฐ์„  ์—…๋ฐ์ดํŠธ ๊ถŒ์žฅ | | `[HOTFIX]` | **๊ธด๊ธ‰ ์ˆ˜์ •** | ๋นจ๊ฐ„์ƒ‰ ๋ฐฐ๋„ˆ | ๋ฒ„๊ทธ ์ฆ‰์‹œ ์ˆ˜์ • ๊ฑด | | `[FEATURE]` | **๊ธฐ๋Šฅ ์ถ”๊ฐ€** | ๋‚จ์ƒ‰(Indigo) | ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ ๋„์ž… | | `[FIX]` | **์ผ๋ฐ˜ ์ˆ˜์ •** | ํšŒ์ƒ‰(Slate) | ์ผ๋ฐ˜์ ์ธ ๋ฒ„๊ทธ ์ˆ˜์ • | | `[PATCH]` | **ํŒจ์น˜/๋ณด์ •** | ํšŒ์ƒ‰(Slate) | ๋งˆ์ด๋„ˆ ํ’ˆ์งˆ ๊ฐœ์„  | --- ## 2. ๊ฐœ๋ฐœ ๋ฐ ๋ฐฐํฌ ์ ˆ์ฐจ (๊ฐœ๋ฐœ PC) ๊ฐœ๋ฐœ ์ž‘์—… ๋ฐ ํƒœ๊ทธ ์ƒ์„ฑ์€ ์•„๋ž˜ ๊ฒฝ๋กœ์—์„œ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. * **์ž‘์—… ๊ฒฝ๋กœ**: `d:\antigravity\smartims` (์œˆ๋„์šฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ธฐ๋ฐ˜) ### STEP 1: ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‚ฌํ•ญ ์ปค๋ฐ‹ ๋ฐ ํ‘ธ์‹œ ```powershell # [์œ„์น˜: d:\antigravity\smartims (๋ฃจํŠธ)] git add . git commit -m "๋ฆด๋ฆฌ์ฆˆ ์ค€๋น„: v0.3.5 ํŒจ์น˜" git push origin main ``` ### STEP 2: ์–ด๋…ธํ…Œ์ดํ‹ฐ๋“œ ํƒœ๊ทธ(Annotated Tag) ์ƒ์„ฑ ```powershell # [์œ„์น˜: d:\antigravity\smartims (๋ฃจํŠธ)] git tag -a v0.3.5 -m "[PATCH] ์‹œ์Šคํ…œ ์•ˆ์ •ํ™” ํŒจ์น˜ - ์›๊ฒฉ ํƒœ๊ทธ ๋™๊ธฐํ™” ๋กœ์ง ๊ฐ•ํ™” - API ์บ์‹œ ๋ฐฉ์ง€ ํƒ€์ž„์Šคํƒฌํ”„ ๋„์ž…" ``` ### STEP 3: ์›๊ฒฉ ์ €์žฅ์†Œ์— ํƒœ๊ทธ ํ‘ธ์‹œ ```powershell # [์œ„์น˜: d:\antigravity\smartims (๋ฃจํŠธ)] git push origin v0.3.5 ``` --- ## 3. ์šด์˜ ์„œ๋ฒ„ ์ˆ˜๋™ ์—…๋ฐ์ดํŠธ ํ†ตํ•ฉ ๊ณต์ • [์ž‘์—… ์ „ ํ•„์ˆ˜ ํ™•์ธ] ์šด์˜ ํ™˜๊ฒฝ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” **๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ์ˆœ์„œ๋ฅผ 1๋ฒˆ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ˆ˜ํ–‰**ํ•˜์‹ญ์‹œ์˜ค. ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋›ธ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ ์œ ์‹ค ์‹œ ๋ณต๊ตฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. --- ### ๐Ÿšจ [STEP 1] ๋ฐ์ดํ„ฐ ๋ฐฑ์—… (๋ฌด์กฐ๊ฑด ์ˆ˜ํ–‰ - ์˜ˆ์™ธ ์—†์Œ) ์—…๋ฐ์ดํŠธ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜๊ธฐ ์ „, ํ˜„์žฌ์˜ ์ด๋ฏธ์ง€ ํŒŒ์ผ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์•ˆ์ „ ๊ฒฝ๋กœ(`/volume1/backup/smart_ims`)๋กœ ๊ฒฉ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. #### 1-1. ์—…๋กœ๋“œ ํŒŒ์ผ(์ด๋ฏธ์ง€/๋งค๋‰ด์–ผ) ๋ฐฑ์—… ```bash # [์‹คํ–‰ ์œ„์น˜: /volume1/web/smartims] # ์ด ๋ช…๋ น์€ ๋“ฑ๋ก๋œ ๋ชจ๋“  ์ž์‚ฐ ์ด๋ฏธ์ง€๋ฅผ ์••์ถ•ํ•˜์—ฌ ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. tar -czvf /volume1/backup/smart_ims/backup_images_$(date +%Y%m%d).tar.gz server/uploads/ ``` #### 1-2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ์ „์ฒด ๋ฐฑ์—… ```bash # [์‹คํ–‰ ์œ„์น˜: /volume1/web/smartims] # DB๋ช…: sokuree_platform_prod, ํฌํŠธ: 3307 ์‚ฌ์šฉ /usr/local/mariadb10/bin/mysqldump -u choibk -p --port 3307 sokuree_platform_prod > /volume1/backup/smart_ims/backup_db_$(date +%Y%m%d).sql ``` > **์ฃผ์˜**: ๋น„๋ฐ€๋ฒˆํ˜ธ ์š”์ฒญ ์‹œ `.env` ํŒŒ์ผ์˜ `DB_PASSWORD`(`^Ocean...`)๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. --- ### ๐Ÿš€ [STEP 2] ๋ฒ„์ „ ๋™๊ธฐํ™” ๋ฐ ์ฝ”๋“œ ๋ฐ˜์˜ ๋ฐฑ์—…์ด ์™„๋ฃŒ๋œ ๊ฒƒ์ด ํ™•์ธ๋œ ๊ฒฝ์šฐ์—๋งŒ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์†Œ์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. ```bash # [์‹คํ–‰ ์œ„์น˜: /volume1/web/smartims] # 1. ์›๊ฒฉ ์ €์žฅ์†Œ์˜ ํƒœ๊ทธ ๋ชฉ๋ก ํ™•์ธ (๋ฐฐํฌ๋œ ์ตœ์‹  ๋ฒ„์ „์ด ๋ฌด์—‡์ธ์ง€ ์ฒดํฌ) git ls-remote --tags origin # 2. ๋กœ์ปฌ ํƒœ๊ทธ ์ •๋ณด๋ฅผ ์›๊ฒฉ๊ณผ ์™„๋ฒฝํžˆ ์ผ์น˜ (๊ฐ•์ œ ๋™๊ธฐํ™”) git fetch origin +refs/tags/*:refs/tags/* --force --prune --prune-tags # 3. ๋ชฉํ‘œ ๋ฒ„์ „์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ ๊ฐ•์ œ ์ „ํ™˜ (์˜ˆ: v0.3.5) # [์ฃผ์˜] ์ด ๋ช…๋ น ์‹คํ–‰ ์‹œ ์ถ”์ ๋˜์ง€ ์•Š์€ ์†Œ์Šค ์ˆ˜์ •์‚ฌํ•ญ์€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. git checkout -f v0.3.5 ``` --- ### ๐Ÿ—๏ธ [STEP 3] ์‹œ์Šคํ…œ ๋นŒ๋“œ ๋ฐ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘ ์ฝ”๋“œ๊ฐ€ ๋ฐ˜์˜๋˜์—ˆ๋‹ค๋ฉด ๋ณ€๊ฒฝ๋œ ๋‚ด์šฉ์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋นŒ๋“œ์™€ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. #### 3-1. ํ”„๋ก ํŠธ์—”๋“œ ๋นŒ๋“œ ```bash # [์‹คํ–‰ ์œ„์น˜: /volume1/web/smartims] npm install && npm run build ``` #### 3-2. ๋ฐฑ์—”๋“œ ๋ฐ˜์˜ ๋ฐ PM2 ์žฌ์‹œ์ž‘ ```bash # [์‹คํ–‰ ์œ„์น˜: /volume1/web/smartims/server] cd server npm install pm2 reload smartims-api ``` --- ### ๐Ÿ†˜ [STEP 4] ๋น„์ƒ์‹œ ๋ณต๊ตฌ ์ ˆ์ฐจ (Emergency Restore) ๋งŒ์•ฝ ์—…๋ฐ์ดํŠธ ํ›„ ์‹œ์Šคํ…œ์ด ์ž‘๋™ํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์ด์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋งŒ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. #### 4-1. ์ด๋ฏธ์ง€ ํŒŒ์ผ ๋ณต์› ```bash # [์‹คํ–‰ ์œ„์น˜: /volume1/web/smartims] # ์ž‘์—… ๋‹น์ผ ์ƒ์„ฑํ•œ ์••์ถ•ํŒŒ์ผ ์ด๋ฆ„์„ ํ™•์ธํ•˜์—ฌ ์ž…๋ ฅํ•˜์„ธ์š”. tar -xzvf /volume1/backup/smart_ims/backup_images_[๋‚ ์งœ].tar.gz -C ./ ``` #### 4-2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ๋ณต์› ```bash # [์‹คํ–‰ ์œ„์น˜: /volume1/web/smartims] /usr/local/mariadb10/bin/mysql -u choibk -p --port 3307 sokuree_platform_prod < /volume1/backup/smart_ims/backup_db_[๋‚ ์งœ].sql ``` --- ## 4. ์œ ์šฉํ•œ Git ๋ช…๋ น์–ด ๋ ˆํผ๋Ÿฐ์Šค * **ํƒœ๊ทธ ๋ชฉ๋ก ํ™•์ธ**: `git tag -l` (๋ชจ๋“  ํ™˜๊ฒฝ์˜ ๋ฃจํŠธ ํด๋”) * **์ตœ์‹  ํƒœ๊ทธ ์ •๋ณด ํ™•์ธ**: `git describe --tags --abbrev=0` * **์›๊ฒฉ ํƒœ๊ทธ ๊ฐ•์ œ ๋ฎ์–ด์“ฐ๊ธฐ (๋ฉ”์‹œ์ง€ ์ˆ˜์ • ์‹œ)**: ```powershell # [์œ„์น˜: ๊ฐœ๋ฐœ PC ๋ฃจํŠธ] git tag -a v0.3.5 -f -m "์ˆ˜์ •๋œ ๋ฉ”์‹œ์ง€..." git push origin v0.3.5 -f ``` --- ## ๐Ÿ’ก ์ตœ์ข… ์ฃผ์˜์‚ฌํ•ญ (Must Read) 1. **DB ๊ณ„์ • ํ™•์ธ**: `-u choibk` ๊ณ„์ •์€ ๋ณธ ์‹œ์Šคํ…œ ์ „์šฉ ๊ณ„์ •์ž…๋‹ˆ๋‹ค. ์šด์˜ ์„œ๋ฒ„ ์ ‘์† ์‹œ `root` ๊ถŒํ•œ์ด๋”๋ผ๋„ DB ์ž‘์—…์€ `choibk`๋กœ ์ˆ˜ํ–‰ํ•ด์•ผ ๊ถŒํ•œ ๊ผฌ์ž„์ด ์—†์Šต๋‹ˆ๋‹ค. 2. **๊ฒฝ๋กœ ์ด๋™ ์ฃผ์˜**: `cd server` ์ด๋™ ํ›„ ๋นŒ๋“œ๊ฐ€ ๋๋‚˜๋ฉด `cd ..`๋ฅผ ํ†ตํ•ด ๋ฐ˜๋“œ์‹œ ๋ฃจํŠธ๋กœ ๋Œ์•„์˜ค์‹ญ์‹œ์˜ค. 3. **์ˆ˜๋™ ์„ค์น˜ ์ฃผ์˜**: `git clone`์„ ์ƒˆ๋กœ ๋ฐ›์•„ ์„ค์น˜ํ•  ๋•Œ๋Š” ๊ธฐ์กด `uploads` ํด๋”๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ ์œ„ **STEP 4-1 ๋ณต๊ตฌ ์ ˆ์ฐจ**๋ฅผ ํ†ตํ•ด ์ด๋ฏธ์ง€๋ฅผ ์ฑ„์›Œ๋„ฃ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. 4. **์ž๋™ ์—…๋ฐ์ดํŠธ ์ •์ฑ…**: ์‹œ์Šคํ…œ ๊ด€๋ฆฌ ๋ฉ”๋‰ด์˜ **[์ž๋™ ์—…๋ฐ์ดํŠธ]**๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ์†Œ์Šค ์ฝ”๋“œ๋งŒ ๊ฐฑ์‹ ํ•˜๋ฉฐ `uploads` ํด๋”๋Š” ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž๋™ ์—…๋ฐ์ดํŠธ ์‹œ์—๋Š” ๋ณ„๋„์˜ ์ด๋ฏธ์ง€ ๋ณต๊ตฌ๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.