Skip to main content

git-teacher-save

Commits changed files to Git, explained in plain language for non-developers. Runs `git add -A` + `git commit` and describes what was saved. Korean triggers: "์ €์žฅํ•ด์ค˜", "์ปค๋ฐ‹", "์ปค๋ฐ‹ํ•ด์ค˜", "๋ณ€๊ฒฝ ๋‚ด์šฉ ์ €์žฅ", "์ง€๊ธˆ๊นŒ์ง€ ํ•œ ๊ฑฐ ์ €์žฅ", "์„ธ์ด๋ธŒ". English triggers: "save", "commit", "save my work".

Source facts

Repository
fivetaku/git-teacher
Last source activity
June 17, 2026 at 13:50
Detected SKILL.md language
Korean
Stars
26
Forks
6

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions ยท Read-only preview
name
git-teacher-save
description
Commits changed files to Git, explained in plain language for non-developers. Runs `git add -A` + `git commit` and describes what was saved. Korean triggers: "์ €์žฅํ•ด์ค˜", "์ปค๋ฐ‹", "์ปค๋ฐ‹ํ•ด์ค˜", "๋ณ€๊ฒฝ ๋‚ด์šฉ ์ €์žฅ", "์ง€๊ธˆ๊นŒ์ง€ ํ•œ ๊ฑฐ ์ €์žฅ", "์„ธ์ด๋ธŒ". English triggers: "save", "commit", "save my work".
<!-- first-run setup: idempotent, non-blocking, self-skips after first run --> **Step 0 โ€” run once, silently, before anything else:** `bash "${CLAUDE_PLUGIN_ROOT}/setup/setup.sh" >/dev/null 2>&1 || true` โ€” do not narrate or comment on it, then continue. # ์ €์žฅํ•˜๊ธฐ โ€” Phase 3 (๋ฐ”๋ฅด๋‹ค ๊นƒ์„ ์ƒ) ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ Commit (์ €์žฅ)ํ•œ๋‹ค. `git add -A` + `git commit`์„ ์‹คํ–‰ํ•˜๊ณ , ์‚ฌํ›„์— ๋ฌด์—‡์„ ํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•œ๋‹ค. ## ์‹คํ–‰ ์ˆœ์„œ ### Step 1: ๋ณ‘๋ ฌ ์ƒํƒœ ์ˆ˜์ง‘ ๋‹ค์Œ ๋ช…๋ น์„ **๋ณ‘๋ ฌ๋กœ** ์‹คํ–‰ํ•œ๋‹ค: ```bash git rev-parse --is-inside-work-tree # .git ์กด์žฌ ํ™•์ธ git symbolic-ref --short HEAD # ํ˜„์žฌ branch git status --porcelain # ๋ณ€๊ฒฝ ํŒŒ์ผ ๋ชฉ๋ก git diff --stat # ๋ณ€๊ฒฝ ํ†ต๊ณ„ ls .gitignore 2>/dev/null # .gitignore ์กด์žฌ ์—ฌ๋ถ€ ``` ### Step 2: ์•ˆ์ „ ๊ฒ€์‚ฌ 1. **`.git` ์—†์Œ**: "์—ฌ๊ธฐ๋Š” Git ํ”„๋กœ์ ํŠธ ํด๋”๊ฐ€ ์•„๋‹ˆ์—์š”. '๊นƒ ์‹œ์ž‘ํ•ด์ค˜'๋กœ ๋จผ์ € ์„ค์ •ํ•˜์„ธ์š”." โ†’ ์ค‘๋‹จ 2. **Detached HEAD**: "์•ˆ์ „ํ•œ ์œ„์น˜์—์„œ ๋ฒ—์–ด๋‚ฌ์–ด์š”." โ†’ `git checkout main` ์‹คํ–‰ ํ›„ ์žฌ์‹œ๋„ 3. **Merge Conflict** (`UU`, `AA` ๋“ฑ): ์ถฉ๋Œ ํŒŒ์ผ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ฃผ๊ณ , **EXECUTE:** ์•„๋ž˜ JSON์œผ๋กœ AskUserQuestion ๋„๊ตฌ๋ฅผ ์ฆ‰์‹œ ํ˜ธ์ถœํ•œ๋‹ค: ```json { "questions": [{ "question": "์ถฉ๋Œ์ด ์žˆ์–ด์„œ ๋ฐ”๋กœ ์ €์žฅํ•  ์ˆ˜ ์—†์–ด์š”. ๋‘ ์‚ฌ๋žŒ์ด ๊ฐ™์€ ๋ถ€๋ถ„์„ ๋™์‹œ์— ๊ณ ์ณค๊ฑฐ๋“ ์š”.\n์ถฉ๋Œ ํŒŒ์ผ: {ํŒŒ์ผ ๋ชฉ๋ก}\n\n์–ด๋–ป๊ฒŒ ํ• ๊นŒ์š”?", "header": "์ถฉ๋Œ ํ•ด๊ฒฐ", "options": [ {"label": "๋‚ด๊ฐ€ ์ˆ˜์ •ํ•œ ๊ฑธ๋กœ ์œ ์ง€", "description": "๋‚ด ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•ด์š”"}, {"label": "์ƒ๋Œ€๋ฐฉ์ด ์ˆ˜์ •ํ•œ ๊ฑธ๋กœ ์œ ์ง€", "description": "์ƒ๋Œ€๋ฐฉ์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ์‚ฌ์šฉํ•ด์š”"} ], "multiSelect": false }] } ``` ์„ ํƒ์— ๋”ฐ๋ผ: - "๋‚ด๊ฐ€ ์ˆ˜์ •ํ•œ ๊ฑธ๋กœ ์œ ์ง€": `git checkout --ours {ํŒŒ์ผ}` โ†’ `git add {ํŒŒ์ผ}` - "์ƒ๋Œ€๋ฐฉ์ด ์ˆ˜์ •ํ•œ ๊ฑธ๋กœ ์œ ์ง€": `git checkout --theirs {ํŒŒ์ผ}` โ†’ `git add {ํŒŒ์ผ}` ์ถฉ๋Œ ํ•ด๊ฒฐ ํ›„ ์ž๋™์œผ๋กœ ์ €์žฅ(commit) ๋‹จ๊ณ„๋กœ ์ง„ํ–‰ํ•œ๋‹ค. 4. **๋ณ€๊ฒฝ ์‚ฌํ•ญ ์—†์Œ**: "์ €์žฅํ•  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์—†์–ด์š”. ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ๋’ค ๋‹ค์‹œ ์‹œ๋„ํ•˜์„ธ์š”." โ†’ ์ค‘๋‹จ ### Step 3: .gitignore ์ž๋™ ์ƒ์„ฑ `.gitignore`๊ฐ€ ์—†์œผ๋ฉด ํ”„๋กœ์ ํŠธ ํƒ€์ž…์„ ๊ฐ์ง€ํ•˜์—ฌ ๊ธฐ๋ณธ `.gitignore`๋ฅผ ์ƒ์„ฑํ•œ๋‹ค: - Node.js (`package.json` ์กด์žฌ) โ†’ `node_modules/`, `.env`, `dist/` ๋“ฑ - Python (`requirements.txt` ๋˜๋Š” `pyproject.toml` ์กด์žฌ) โ†’ `__pycache__/`, `.env`, `venv/` ๋“ฑ - ์ผ๋ฐ˜ โ†’ `.env`, `.DS_Store`, `*.log`, `thumbs.db` ๋“ฑ ์ƒ์„ฑ ํ›„ ์•ˆ๋‚ด: "๋ณด์•ˆ์„ ์œ„ํ•ด .gitignore ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ์–ด์š”. ๋น„๋ฐ€๋ฒˆํ˜ธ๋‚˜ ์ž„์‹œ ํŒŒ์ผ์€ ์ž๋™์œผ๋กœ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค." ### Step 4: ๋ณ€๊ฒฝ ํŒŒ์ผ ์•ˆ๋‚ด + ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ์š”์ฒญ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค€ ๋’ค ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌผ์–ด๋ณธ๋‹ค. **EXECUTE:** ์•„๋ž˜ JSON์œผ๋กœ AskUserQuestion ๋„๊ตฌ๋ฅผ ์ฆ‰์‹œ ํ˜ธ์ถœํ•œ๋‹ค (๋ณ€๊ฒฝ ํŒŒ์ผ ๋ชฉ๋ก์„ question์— ํฌํ•จ): ```json { "questions": [{ "question": "๋ณ€๊ฒฝ๋œ ํŒŒ์ผ N๊ฐœ:\n - file1 (์ˆ˜์ •๋จ)\n - file2 (์ƒˆ ํŒŒ์ผ)\n\n๋ญ˜ ๋ฐ”๊ฟจ๋Š”์ง€ ํ•œ ์ค„๋กœ ์ ์–ด์ฃผ์„ธ์š”.", "header": "์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€", "options": [ {"label": "์ง์ ‘ ์ž…๋ ฅ", "description": "Other์— ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” (์˜ˆ: '๋กœ๊ณ  ๋ณ€๊ฒฝ', '๋ฉ”์ธ ํŽ˜์ด์ง€ ์ˆ˜์ •')"}, {"label": "์ž๋™ ์ƒ์„ฑ", "description": "๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ถ„์„ํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™์œผ๋กœ ๋งŒ๋“ค์–ด์š”"} ], "multiSelect": false }] } ``` > question ์•ˆ์˜ ํŒŒ์ผ ๋ชฉ๋ก์€ `git status --porcelain` ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์  ์ƒ์„ฑํ•œ๋‹ค. **์‚ฌ์šฉ์ž๊ฐ€ ๋นˆ ๊ฐ’์ด๋‚˜ ์• ๋งคํ•œ ๋‹ต์„ ์ฃผ๋ฉด**: ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ถ„์„ํ•˜์—ฌ ์ž์—ฐ์–ด ๋ฉ”์‹œ์ง€๋ฅผ ์ž๋™ ์ƒ์„ฑํ•œ๋‹ค. ### Step 5: ์ €์žฅ ์‹คํ–‰ ```bash git add -A git commit -m "์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋ฉ”์‹œ์ง€" ``` ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€ ๊ทœ์น™: - ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž์—ฐ์–ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ (conventional commits ๊ฐ•์ œํ•˜์ง€ ์•Š์Œ) - ํ•œ๊ตญ์–ด/์˜์–ด ๋ชจ๋‘ ํ—ˆ์šฉ - ์˜ˆ: "๋กœ๊ณ  ๋ณ€๊ฒฝ", "๋ฉ”์ธ ํŽ˜์ด์ง€ ์ˆ˜์ •", "์˜คํƒ€ ๊ณ ์นจ" ### Step 6: ์˜์ˆ˜์ฆ ์ถœ๋ ฅ ์‹คํ–‰ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ์•Œ๋ ค์ค€๋‹ค: ``` ์ €์žฅ ์™„๋ฃŒ! ํŒŒ์ผ 3๊ฐœ๋ฅผ ํฌ์žฅํ•ด์„œ '๋กœ๊ณ  ๋ณ€๊ฒฝ'์ด๋ผ๊ณ  ๊ธฐ๋กํ–ˆ์–ด์š”. ์•„์ง ๋‚ด ์ปดํ“จํ„ฐ์—๋งŒ ์žˆ์–ด์š”. GitHub ํด๋ผ์šฐ๋“œ์—๋„ ์˜ฌ๋ฆฌ๋ ค๋ฉด "์˜ฌ๋ ค์ค˜"๋ผ๊ณ  ํ•˜์„ธ์š”. ``` ## ํ•ต์‹ฌ ๊ฐ•์กฐ์‚ฌํ•ญ - ์ €์žฅ ํ›„ **๋งค๋ฒˆ** "์•„์ง ๋‚ด ์ปดํ“จํ„ฐ์—๋งŒ ์žˆ์–ด์š”" ๋ฆฌ๋งˆ์ธ๋“œ - Commit๊ณผ Push์˜ ์ฐจ์ด๋ฅผ ์ฒด๊ฐํ•˜๊ฒŒ ํ•จ - ๋‹ค์Œ ํ–‰๋™(Push)์„ ์•ˆ๋‚ด
View on GitHub