Imported from pinpoint-apm/pinpoint (
web-frontend/src/main/v3/.claude/skills/merge-check/SKILL.md). Install upstream withnpx skills add pinpoint-apm/pinpoint --skill merge-check. Copyright stays with the author.
๋จธ์ง ์ ์ต์ข ๋ฆฌ๋ทฐ (merge-check)
์ด ์คํฌ์ ๋ชฉ์ ์ "๋จธ์ง ๋ฒํผ์ ๋๋ฌ๋ ์์ ํ๊ฐ"์ ๋ตํ๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ค์ํ ํ๋จ ๊ธฐ์ค์ ํ๋์ ๋๋ค: ๊ธฐ์กด์ ์ ๋์ํ๋ ๊ธฐ๋ฅ์ด ๊ทธ๋๋ก ๋์ํ๋๊ฐ. ์ ๊ธฐ๋ฅ์ด ์กฐ๊ธ ๋ถ์กฑํ ๊ฑด ๋ค์ PR์์ ๊ณ ์น ์ ์์ง๋ง, ์ ์ฐ๋ ๊ธฐ๋ฅ์ด ๊นจ์ง๋ฉด ์ฌ์ฉ์๊ฐ ๋ฐ๋ก ํผํด๋ฅผ ๋ด ๋๋ค. ๊ทธ๋์ ์ด ์คํฌ์ "์๋ก ์ถ๊ฐ๋ ์ฝ๋๊ฐ ์์๊ฐ"๋ณด๋ค **"์ด ๋ณ๊ฒฝ์ด ๋ฌด์์ ๊ฑด๋๋ ธ๊ณ , ๊ทธ๊ฒ์ ์ฐ๋ ๊ณณ๋ค์ด ์์ง ๋ฉ์ฉกํ๊ฐ"**์ ์๊ฐ์ ๋ ์๋๋ค.
์ ๋ ํ์ง ์๋ ๊ฒ
- ๋จธ์งํ์ง ์์ต๋๋ค.
gh pr merge๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ์คํํ์ง ์์ต๋๋ค. ์ด ์คํฌ์ ํ๋จ๋ง ํ๊ณ , ๋จธ์ง๋ ์ฌ์ฉ์๊ฐ ํฉ๋๋ค. - ์ฝ๋๋ฅผ ๊ณ ์น์ง ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ์ฐพ์ผ๋ฉด ๋ณด๊ณ ํฉ๋๋ค. ๊ณ ์น๋ ๊ฑด ๋ณ๊ฐ ์์
(
/apply-review)์ ๋๋ค. - GitHub์ ์๋ฌด๊ฒ๋ ์ฐ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ๋ํ์ฐฝ์๋ง ํ๊ตญ์ด๋ก ๋ณด๊ณ ํฉ๋๋ค. PR ์ฝ๋ฉํธ๋ Approve๋ ์ฌ์ฉ์๊ฐ ๋ช ์์ ์ผ๋ก ์์ฒญํ ๋๋ง, ํ์ธ์ ๋ฐ๊ณ ๋จ๊น๋๋ค.
- ํ์ธํ์ง ์์ ๊ฒ์ ํ์ธํ ์ฒํ์ง ์์ต๋๋ค. ๋ชป ๋ณธ ๊ฑด "ํ์ธ ๋ชป ํจ"์ผ๋ก ์ ์ต๋๋ค. ๊ทผ๊ฑฐ ์๋ โ ๋ ์ด ์คํฌ์ ์ฐ๋ ์๋ฏธ๋ฅผ ์ง์๋๋ค.
0๋จ๊ณ: ์ด๋ค PR์ธ์ง ํ์ + ์์ ์ค์ธ ๋ด์ฉ ๋ณดํธ
git branch --show-current
git status --porcelain # ์ปค๋ฐ ์ ๋ ์์
์ด ์๋์ง ๋จผ์ ํ์ธ
git rev-parse HEAD # ๋ก์ปฌ์ด ๋ณด๊ณ ์๋ ์ฝ๋
gh pr view --json number,title,url,headRefName,headRefOid,baseRefName,state,mergeable,author
๋์ PR ์ ํ๊ธฐ
gh pr view๊ฐ PR์ ์ฐพ์ผ๋ฉด โ ๊ทธ PR์ด ๋์์ ๋๋ค. ๋งํฌ๋ฅผ ๋ฐ๋ก ๋ฐ์ง ์์ต๋๋ค.- ๋ชป ์ฐพ๊ฑฐ๋ ํ์ฌ ๋ธ๋์น๊ฐ
master์ด๋ฉด โ ๋ฉ์ถ๊ณ PR ๋งํฌ๋ฅผ ์์ฒญํฉ๋๋ค. ์ถ์ธกํ์ง ์์ต๋๋ค. ์: "ํ์ฌ ๋ธ๋์น์ ์ฐ๊ฒฐ๋ PR์ ์ฐพ์ง ๋ชปํ์ด์. ๋ฆฌ๋ทฐํ PR ๋งํฌ๋ฅผ ์๋ ค์ฃผ์ธ์." - ์ฌ์ฉ์๊ฐ ๋งํฌ๋ฅผ ์คฌ์ผ๋ฉด ํญ์ ๊ทธ ๋งํฌ๊ฐ ์ฐ์ ์
๋๋ค. ๋งํฌ์์
{owner}/{repo}์ PR ๋ฒํธ๋ฅผ ํ์ฑํฉ๋๋ค.
๋ด๊ฐ ์ฝ๋ ์ฝ๋๊ฐ ์ ๋ง ๊ทธ PR์ ์ฝ๋์ธ๊ฐ (๋์น๊ธฐ ์ฌ์)
git rev-parse HEAD์ PR์ headRefOid๊ฐ ๋ค๋ฅด๋ฉด, ๋ก์ปฌ์์ ๋ณด๊ณ ์๋ ์ฝ๋๊ฐ PR์ ์ฌ๋ผ๊ฐ ์ฝ๋๊ฐ
์๋๋๋ค. ๋ฆฌ๋ฒ ์ด์คํ์ง๋ง ์์ง ํธ์ํ์ง ์์ ๊ฒฝ์ฐ๊ฐ ํํฉ๋๋ค. ์ด๋ ๊ทธ๋ฅ ๋ฆฌ๋ทฐํ๋ฉด "PR์ ๊ฒ์ฆํ๋ค"๊ณ
๋งํ ์ ์์ต๋๋ค. ๋ ์ปค๋ฐ์ ์ฝ๋๊ฐ ์ค์ ๋ก ๊ฐ์์ง ํ์ธํ์ธ์:
git diff --stat {headRefOid} HEAD # ๋น์ด ์์ผ๋ฉด ์ฝ๋๋ ๋์ผํ๊ณ ๋ฒ ์ด์ค๋ง ๋ค๋ฅด๋ค
- ์ฐจ์ด๊ฐ ์๊ฑฐ๋ ๋ฌด๊ดํ ํ์ผ๋ฟ์ด๋ฉด โ ๊ทธ๋๋ก ์งํํ๊ณ , ๋ณด๊ณ ์ "๋ก์ปฌ์ด ๋ฆฌ๋ฒ ์ด์ค๋ก ์์ ์์ผ๋ ์ฝ๋๋ ๋์ผ"์ด๋ผ๊ณ ํ ์ค ์ ์ต๋๋ค.
- ์ฐจ์ด๊ฐ ์์ผ๋ฉด โ ์ด๋ ์ชฝ์ ๋ฆฌ๋ทฐํ ์ง ์ฌ์ฉ์์๊ฒ ํ์ธํฉ๋๋ค. ๋ก์ปฌ๋ง ์๋ ์์ ์ PR์ ์์ผ๋ฏ๋ก, ๊ทธ๊ฒ๊น์ง ํต๊ณผ ํ์ ์ ๋ฃ์ผ๋ฉด ์ค์ ๋จธ์ง๋ ์ฝ๋์ ์ด๊ธ๋ฉ๋๋ค.
์ฌ์ฉ์์ ์์ ๋ณดํธ
๊ฒ์ฆ์ ์ํด ๋ธ๋์น๋ฅผ ์ฎ๊ฒจ์ผ ํ ์๋ ์์ต๋๋ค. ๋ค๋ง ํญ์ ์ํํ ๊ฑด ์๋๋ ๊ตฌ๋ถํ์ธ์:
- ์ด๋ฏธ ๊ทธ PR์ ๋ธ๋์น์ ์์ผ๋ฉด ์ฒดํฌ์์์ด ํ์ ์์ต๋๋ค. ๊ทธ๋ฅ ์งํํฉ๋๋ค.
- untracked ํ์ผ(
??)๋ง ์์ผ๋ฉด ์ฒดํฌ์์ยท๋จธ์ง๊ฐ ๊ทธ ํ์ผ์ ๊ฑด๋๋ฆฌ์ง ์์ผ๋ฏ๋ก ๊ทธ๋๋ก ์งํํฉ๋๋ค. (๋ณด๊ณ ์ ํ ์ค ์ธ๊ธ๋ง) - ์์ ยท์คํ
์ด์ง๋ ๋ณ๊ฒฝ(
M,A๋ฑ)์ด ์์ผ๋ฉด ์ฒดํฌ์์ํ์ง ๋ง๊ณ ์ฌ์ฉ์์๊ฒ ๋จผ์ ๋ฌป์ต๋๋ค: "์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ์ด ์์ด์. โ ์ฝ๋ ์ฝ๊ธฐ๋ง์ผ๋ก ๋ฆฌ๋ทฐ โก stash ํ ์งํ โ ์ด๋ ์ชฝ์ผ๋ก ํ ๊น์?"
๋ธ๋์น๋ฅผ ์ฎ๊ฒผ๋ค๋ฉด ๋ฆฌ๋ทฐ๊ฐ ๋๋๊ณ ๋ฐ๋์ ์๋ ๋ธ๋์น๋ก ๋๋ ค๋๊ณ , ๊ทธ ์ฌ์ค์ ๋ณด๊ณ ์ ์ ์ต๋๋ค.
1๋จ๊ณ: ์ด PR์ด ๋ฌด์์ ํ๋์ง ๋จผ์ ์์ฝํ๋ค
ํ์ ๋ณด๋ค ์์ฝ์ด ๋จผ์ ์ ๋๋ค. ๋ฌด์์ ํ๋ ค๋ PR์ธ์ง ๋ชจ๋ฅด๋ฉด "์ ๋๋ก ํ๋์ง"๋ ํ๋จํ ์ ์์ต๋๋ค.
gh pr view {number} --repo {owner}/{repo} --json title,body,commits,files,additions,deletions
# ๋ณ๊ฒฝ ๊ท๋ชจ๋ git์ผ๋ก ๋ด
๋๋ค. (`gh pr diff`์๋ --stat์ด ์๋ ๋ฒ์ ์ด ์์ด ๊ทธ๋๋ก ์ฐ๋ฉด ์คํจํฉ๋๋ค.)
git fetch upstream master
git diff --stat upstream/master...HEAD # ์ธ ์ : ๊ณตํต ์กฐ์๋ถํฐ ์ด ๋ธ๋์น๊น์ง
์ฝ์ ๊ฒ:
- PR ์ ๋ชฉยท๋ณธ๋ฌธยท์ฐ๊ฒฐ๋ ์ด์ โ ์ด PR์ด ํ๋ ค๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ๊ฐ
- ์ปค๋ฐ ๋ฉ์์ง๋ค โ ์ด๋ค ์์๋ก ๋ฌด์์ ํ๋๊ฐ
- ๋ณ๊ฒฝ ํ์ผ ๋ชฉ๋ก๊ณผ ๊ท๋ชจ โ ์ด๋๋ฅผ ๊ฑด๋๋ ธ๋๊ฐ
์ฌ๊ธฐ์ ๋์ค๋ ์์ฝ์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ๋ ์ฒซ ํญ๋ชฉ์ด๋ฉฐ, ์๋(PR ๋ณธ๋ฌธ)์ ์ค์ (diff)๊ฐ ์ด๊ธ๋๋์ง๋ฅผ ๋ณด๋ ๊ธฐ์ค์ด๊ธฐ๋ ํฉ๋๋ค. "๋ณธ๋ฌธ์๋ A๋ง ๊ณ ์ณค๋ค๊ณ ์ผ๋๋ฐ diff์๋ B๋ ๋ฐ๋์ด ์๋ค" โ ์ด๊ฑด ๊ทธ ์์ฒด๋ก ๋ฆฌ๋ทฐ ๋์์ ๋๋ค. ์๋ํ์ง ์์ ํ์ผ์ด ์์ฌ ๋ค์ด์จ ๊ฒ์ผ ์ ์๊ณ , ๊ทธ๊ฒ ํ๊ท์ ํํ ์์ธ์ ๋๋ค.
2๋จ๊ณ: ์ค์ ๋ก ๋น๋ยทํ ์คํธ๋ฅผ ๋๋ฆฐ๋ค
๊ธฐ๋ณธ ๋์์ ์ค์ ์คํ์ ๋๋ค. ์ฝ๋๋ฅผ ์ฝ์ด์ "๊ด์ฐฎ์ ๋ณด์ธ๋ค"์ ๋น๋๊ฐ ํต๊ณผํ๋ ๊ฒ์ ๋ค๋ฅธ ์ฆ๊ฑฐ์ ๋๋ค. (์ฌ์ฉ์๊ฐ "๋น ๋ฅด๊ฒ ๋ด์ค"๋ผ๊ณ ํ๋ค๋ฉด ์ด ๋จ๊ณ๋ฅผ ๊ฑด๋๋ฐ๊ณ CI ๊ฒฐ๊ณผ ์กฐํ๋ก ๋์ฒดํ๋, ๋ณด๊ณ ์ "์ง์ ์คํํ์ง ์์"์ ๋ช ์ํฉ๋๋ค.)
๊ฒ์ฆ์ ๋จธ์ง๋ ๋ค์ ์ฝ๋์ ๋ํด ํด์ผ ์๋ฏธ๊ฐ ์์ต๋๋ค. PR ๋ธ๋์น ๋จ๋ ์ผ๋ก ํต๊ณผํด๋, ๊ทธ ์ฌ์ด master์ ๋ค์ด๊ฐ ๋ค๋ฅธ ๋ณ๊ฒฝ๊ณผ ๋ถ๋ชํ๋ฉด ๋จธ์ง ์งํ์ ๊นจ์ง๋๋ค. ๊ทธ๋์ ํฉ์ณ ๋๊ณ ๋๋ฆฝ๋๋ค.
gh pr checkout {number} --repo {owner}/{repo}
git fetch upstream master
git merge --no-commit --no-ff upstream/master # ์ปค๋ฐํ์ง ์๊ณ ํฉ์น ์ํ๋ง ๋ง๋ ๋ค
- ์ถฉ๋์ด ๋๋ฉด โ
git merge --abortํ, ์ถฉ๋ ํ์ผ์ ๋ณด๊ณ ํญ๋ชฉ์ผ๋ก ์ฌ๋ฆฝ๋๋ค(์กฐ๊ฑด๋ถ ๋๋ ๋จธ์ง ๋ถ๊ฐ ์ฌ์ ). ์ดํ ๋ฆฌ๋ทฐ๋ PR ๋ธ๋์น ์ํ๋ก ์ฝ๋ ์ฝ๊ธฐ ์ค์ฌ์ผ๋ก ์ด์ด๊ฐ๋๋ค. - ๊นจ๋ํ๊ฒ ํฉ์ณ์ง๋ฉด โ ๊ทธ ์ํ(= ๋จธ์ง ํ master์ ๋ชจ์ต)์์ ๊ฒ์ฆ์ ๋๋ฆฝ๋๋ค.
# web-frontend/src/main/v3 ์์
yarn build # TypeScript ๊ฒ์ฌ + ํ๋ก๋์
๋น๋
yarn test # ์ ์ฒด ์ํฌ์คํ์ด์ค ํ
์คํธ
yarn lint
๊ฒ์ฆ์ด ๋๋๋ฉด git merge --abort๋ก ํฉ์น ์ํ๋ฅผ ๋๋๋ฆฝ๋๋ค. (๋จธ์ง ๊ฒฐ๊ณผ๋ฅผ ๋จ๊ธฐ์ง ์์ต๋๋ค.)
- ๋น๋ ์คํจ โ ๋ฌด์กฐ๊ฑด ๋จธ์ง ๋ถ๊ฐ. ๋ ๋ณผ ๊ฒ ์์ต๋๋ค.
- ํ ์คํธ ์คํจ โ ์คํจํ ํ ์คํธ๊ฐ ์ด PR ๋๋ฌธ์ธ์ง ํ์ธ. upstream/master์์๋ ๊ฐ์ ํ ์คํธ๊ฐ ์คํจํ๋ฉด ๊ธฐ์กด ๋ฌธ์ ์ ๋๋ค. ๊ทธ ๊ตฌ๋ถ์ ํ์ง ์๊ณ "ํ ์คํธ ์คํจ"๋ผ๊ณ ๋ง ๋ณด๊ณ ํ๋ฉด ์ฌ์ฉ์๊ฐ ํ์๊ณ ํฉ๋๋ค.
- CI ๊ฒฐ๊ณผ๋ ํจ๊ป ๋ด
๋๋ค.
gh pr checks๋ ์คํจ ์ฌ๋ถ๋ง ์๋ ค์ฃผ๊ณ ์ด์ ๋ฅผ ๋งํด์ฃผ์ง ์์ผ๋, ์คํจํ ๊ฒ์ด ์์ผ๋ฉด ๋ฐ๋์ ๋ด์ฉ๊น์ง ์ฝ์ต๋๋ค. (ํ์ง ๊ฒ์ดํธ ์คํจ๋ ์ ์ฅ์ ์์ฒด์ ๋จธ์ง ๊ธฐ์ค์ ๋๋ค.)
gh pr checks {number} --repo {owner}/{repo}
# ์คํจํ ๊ฒ์ฌ์ ์ค์ ์ฌ์ (์: SonarCloud ํ์ง ๊ฒ์ดํธ๊ฐ ๋ฌด์์ ๊ฑธ์๋์ง)
gh api repos/{owner}/{repo}/commits/{headRefOid}/check-runs \
--jq '.check_runs[] | select(.conclusion=="failure") | "\(.name) | \(.output.title) | \(.output.summary)"'
3๋จ๊ณ: ๊ธฐ์กด ๊ธฐ๋ฅ ํ๊ท ์ ๊ฒ โ ์ด ์คํฌ์ ํต์ฌ
์ฌ๊ธฐ์ ๊ฐ์ฅ ๋ง์ ์๊ฐ์ ์๋๋ค. ๋ฐฉ๋ฒ์ด ์ค์ํฉ๋๋ค. diff๋ฅผ ์์์ ์๋๋ก ํ์ด ์ฝ๋ ๊ฒ์ ์ถ๊ฐ๋ ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋ง๋ค ๋ฟ์ด๊ณ , ํ๊ท๋ ๊ฑฐ์ ํญ์ ์ถ๊ฐ๊ฐ ์๋๋ผ ๋ณ๊ฒฝ๊ณผ ์ญ์ ์์ ๋์ต๋๋ค.
3a. PR์ ๋ง๋ ๋ค master๊ฐ ์ป์ ๋ณ๊ฒฝ๊ณผ ๋ถ๋ชํ๋์ง ๋ณธ๋ค
์ด๊ฑด ์ด PR์ diff๋ง ๋ด์๋ ์ ๋ ๋ณด์ด์ง ์์ต๋๋ค. PR ๋ธ๋์น ์์์๋ ์๋ฒฝํ ์ฝ๋๊ฐ, ๊ทธ์ฌ์ด master์ ๋ค์ด์จ ๋ค๋ฅธ ๋ณ๊ฒฝ๊ณผ ๋ง๋ ๊นจ์ง ์ ์์ต๋๋ค. ๋จธ์ง ๋ฆฌ๋ทฐ๊ฐ ์ผ๋ฐ ์ฝ๋ ๋ฆฌ๋ทฐ์ ๋ค๋ฅธ ์ง์ ์ด ๋ฐ๋ก ์ฌ๊ธฐ์ ๋๋ค.
# ์ด PR์ ๋ฒ ์ด์ค ์ดํ master๊ฐ ์๋ก ์ป์ ์ปค๋ฐ
git log --oneline $(git merge-base HEAD upstream/master)..upstream/master
์ปค๋ฐ ๋ชฉ๋ก์ ์ฝ๊ณ , ์ด PR์ด ๊ฑด๋๋ฆฐ ์์ญ๊ณผ ๊ฒน์น๋ ๊ฒ์ด ์์ผ๋ฉด ๊ทธ ์ปค๋ฐ์ diff๋ฅผ ์ง์ ํ์ธํฉ๋๋ค. ํนํ ๋ฐฑ์๋ ๋ณ๊ฒฝ์ ํ๋ก ํธ์ ๊ณ์ฝ์ผ๋ก ์ฐ๊ฒฐ๋ผ ์์ด ๊ฒน์น๊ธฐ ์ฝ์ต๋๋ค:
- API ์๋ตยท์ํ ์ฝ๋๊ฐ ๋ฐ๋์๋ โ ํ๋ก ํธ๊ฐ ํน์ ์ํ ์ฝ๋(404 ๋ฑ)๋ ํ๋๋ฅผ ๋ณด๊ณ ๋ถ๊ธฐํ๋ค๋ฉด, ๊ทธ ๊ท์น์ด ์์ง ์ ํจํ์ง ํ์ธํฉ๋๋ค. (์ค์ ๋ก "์๋ ์ด๋ฆ์ 404" ํ๋ก ํธ + "400์ ๋ฐํ" ๋ฐฑ์๋๊ฐ ๊ฐ์ ์์ ์ ์ฌ๋ผ์จ ์ ์ด ์์ต๋๋ค.)
- ํ์ ํ๋ผ๋ฏธํฐ๊ฐ ๋์๋ โ ํ๋ก ํธ๊ฐ ๊ทธ ๊ฐ ์์ด ๋ณด๋ด๋ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด ๋จธ์ง ์งํ 400์ด ๋ฉ๋๋ค.
- ์กฐ์ฉํ ๋์ด๊ฐ๋ ๊ฒ์ด ์์ธ๊ฐ ๋์๋ โ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ๋์ฒด๋๋ ๋์์ด ์ค๋ฅ๋ก ๋ฐ๋๋ฉด, ๊ทธ์ ์์กดํ ํ๋ฉด์ด ๊นจ์ง๋๋ค.
๊ฒน์น๋ ๊ฒ์ด ์์ผ๋ฉด "master์ ์ ์ปค๋ฐ N๊ฐ, ์ด PR๊ณผ ๊ฒน์น๋ ์์ญ ์์"์ด๋ผ๊ณ ์ ๊ณ ๋์ด๊ฐ๋๋ค.
3b. "์ํํ ๋ณ๊ฒฝ"๋ง ๊ณจ๋ผ๋ธ๋ค
diff์์ ๋ค์์ ๋ฝ์ ๋ชฉ๋ก์ผ๋ก ๋ง๋ญ๋๋ค. ์ถ๊ฐ๋ง ๋ ์ฝ๋๋ ํ๊ท ์ํ์ด ๋ฎ์ผ๋ ๋ค๋ก ๋ฏธ๋ฃน๋๋ค.
git diff upstream/master...HEAD # ์ ์ฒด diff๋ฅผ ์ค์ ๋ก ์ฝ์ต๋๋ค
| ์ํ ์ ํธ | ์ ์ํํ๊ฐ |
|---|---|
| ์ง์์ง ์ค / ์ญ์ ๋ ํ์ผ ยท export | ์ฐ๋ ๊ณณ์ด ๋จ์ ์์ผ๋ฉด ๊ทธ๋๋ก ๊นจ์ง๋๋ค |
| ํจ์ ์๊ทธ๋์ฒ ยท props ยท ๋ฐํ ํ์ ๋ณ๊ฒฝ | ํธ์ถ์๊ฐ ์ ๊ณ์ฝ์ ๊ธฐ๋ํฉ๋๋ค |
| ๊ธฐ๋ณธ๊ฐ ๋ณ๊ฒฝ, optional โ required ๋ณ๊ฒฝ | ์ธ์๋ฅผ ์ ๋๊ธฐ๋ ํธ์ถ์์ ๋์์ด ์กฐ์ฉํ ๋ฐ๋๋๋ค |
์กฐ๊ฑด๋ฌธ(if, ์ผํญ, &&) ์์ |
๊ธฐ์กด ๊ฒฝ๋ก๊ฐ ์ ์กฐ๊ฑด์ ๊ฑธ๋ ค ๋น ์ง ์ ์์ต๋๋ค |
| ์ด๋ฆ ๋ณ๊ฒฝ (rename) | ์ฐธ์กฐ๋ฅผ ํ๋๋ผ๋ ๋์น๋ฉด ๊นจ์ง๋๋ค |
| ๊ณต์ฉ ํ์ผ ์์ (hooks/api, atoms, constants, utils) | ์๋น์๊ฐ ๋ง์ ํ๊ธ์ด ํฝ๋๋ค |
3c. ๋ชฉ๋ก์ ํญ๋ชฉ๋ง๋ค "์ฐ๋ ๊ณณ ์ ๋ถ"๋ฅผ ์ฐพ์ ํ์ธํ๋ค
์ด๊ฒ ํต์ฌ ์์ ์ ๋๋ค. ๋ณ๊ฒฝ๋ ์ฌ๋ณผ ํ๋ํ๋์ ๋ํด:
git grep -n "์ฌ๋ณผ์ด๋ฆ" -- '*.ts' '*.tsx' # ์ฌ์ฉ์ฒ ์ ๋ถ. ๊ฐ์๋ฅผ ์
๋๋ค
๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์ฒ๋ฅผ ์ํ๋งํ์ง ๋ง๊ณ ์ ๋ถ ํ์ธํฉ๋๋ค. 3๊ณณ๋ฟ์ด๋ฉด 3๊ณณ ๋ค, 20๊ณณ์ด๋ฉด 20๊ณณ ๋ค. ๋๋ฌด ๋ง์ ์ ๋ถ ๋ชป ๋ดค์ผ๋ฉด ๋ช ๊ณณ ์ค ๋ช ๊ณณ์ ๋ดค๋์ง ์ซ์๋ก ๋ณด๊ณ ํฉ๋๋ค ("18๊ณณ ์ค 12๊ณณ ํ์ธ"). "๋์ถฉ ๊ด์ฐฎ์ ๋ณด์ธ๋ค"๋ ์ด ์คํฌ์์ ๊ฐ์ฅ ์ํํ ๋ฌธ์ฅ์ ๋๋ค.
๊ฐ ์ฌ์ฉ์ฒ์์ ํ์ธํ ๊ฒ: ์ด๋ฒ ๋ณ๊ฒฝ ํ์๋ ์ด ํธ์ถ์ด ์์ ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋๊ฐ. ํ์ ์ฒดํฌ๋ง ํต๊ณผํ๋ ๊ฒ์ผ๋ก๋ ๋ถ์กฑํฉ๋๋ค โ ํ์ ์ ๋ง๋๋ฐ ๋์๋ง ๋ฌ๋ผ์ง๋ ๋ณ๊ฒฝ์ด ์ ์ผ ์ก๊ธฐ ์ด๋ ต์ต๋๋ค (๊ธฐ๋ณธ๊ฐ ๋ณ๊ฒฝ, ์กฐ๊ฑด ๋ค์งํ, ์ ๋ ฌ ์์ ๋ณ๊ฒฝ, ์บ์ ํค ๋ณ๊ฒฝ ๋ฑ).
.claude/rules/code-review-policy.md์ ์ํฅ ๋ถ์ ์ ์ฐจ๋ฅผ ๊ทธ๋๋ก ๋ฐ๋ฆ
๋๋ค.
3d. Pinpoint์์ ์ค์ ๋ก ํ๊ท๊ฐ ๋ฌ๋ ์๋ฆฌ๋ค
์ด ํ๋ก์ ํธ์์ ์กฐ์ฉํ ๊นจ์ง๊ธฐ ์ฌ์ด ์ง์ ์ ๋๋ค. ํด๋นํ๋ ๋ณ๊ฒฝ์ด ์์ผ๋ฉด ๋ฐ๋์ ํ์ธํฉ๋๋ค.
- ์ค์ ํ๋๊ทธ ๋ถ๊ธฐ โ
experimental.enableServiceMap๊ฐ์ ํ๋๊ทธ. ํ๋๊ทธ๊ฐ ๊บผ์ง ๊ธฐ์กด ์ฌ์ฉ์์ ๊ฒฝ๋ก๊ฐ ๊ทธ๋๋ก์ธ๊ฐ๋ฅผ ๋ณ๋๋ก ํ์ธํฉ๋๋ค. ์ผ ์ชฝ๋ง ํ์ธํ๊ณ ๋์ด๊ฐ๋ ์ค์๊ฐ ํํฉ๋๋ค. ๊ทธ ๊ธฐ๋ฅ์ ๋ํ ๊ท์น ๋ฌธ์๊ฐ.claude/rules/์ ์์ผ๋ฉด ํจ๊ป ์ฝ์ต๋๋ค. - Jotai ์ํฐ โ ์ํฐ์ ํ๋ฉด remount๋ก ์ง์์ง์ง ์์ต๋๋ค. ์ํฐ์ ์ถ๊ฐยท์์ ํ์ผ๋ฉด ์ฝ๋ ๋ชจ๋ ์ปดํฌ๋ํธ์ ์ด๊ธฐํ ์์ ์ ํ์ธํฉ๋๋ค. ์ ์ง์์ง ์ ๊ฐ์ผ๋ก ์กฐํ๊ฐ ๋๊ฐ 400์ ๋ฐ๋ ์ฌ๊ณ ๊ฐ ์ค์ ๋ก ์์์ต๋๋ค.
- React Query ์ฟผ๋ฆฌ ํค โ ํค๊ฐ ๋ฐ๋๋ฉด ์บ์ ๋ฌดํจํ๊ฐ ๊นจ์ง๊ฑฐ๋, ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ ํค์ ์์ ๋๋ค.
- ๋ผ์ฐํธ ๊ฒฝ๋ก / URL ํ๋ผ๋ฏธํฐ โ ๊ฒฝ๋ก ํํ๊ฐ ๋ฐ๋๋ฉด ๊ธฐ์กด ๋งํฌยท๋ถ๋งํฌ๊ฐ ์ฃฝ์ต๋๋ค. ๋ก๋์ ๊ฒ์ฆยท๋ฆฌ๋ค์ด๋ ํธ๊ฐ ์ ํํ๋ ๋ฐ์์ฃผ๋์ง ํ์ธํฉ๋๋ค.
- i18n ํค โ ์ ๊ฑฐยท์ด๋ฆ ๋ณ๊ฒฝ๋ ํค๋ฅผ ๋ค๋ฅธ ํ๋ฉด์ด ์์ง ์ฐ๊ณ ์์ง ์์์ง
git grep์ผ๋ก ํ์ธํฉ๋๋ค. - ์ปดํฌ๋ํธ props โ ๋ ๋ํ๋ ๋ชจ๋ ๋ถ๋ชจ๊ฐ ์ ํจํ props๋ฅผ ๋๊ธฐ๋์ง ํ์ธํฉ๋๋ค.
- API ์๋ํฌ์ธํธ ยท ์๋ต ํ์ โ Java ์ชฝ์ด ํจ๊ป ๋ฐ๋์์ผ๋ฉด, ํ๋ก ํธ๊ฐ ๊ธฐ๋ํ๋ ํ๋ยทํํ์ ๋ง๋์ง ๋์กฐํฉ๋๋ค. (๋ฐฑ์๋ ์ฝ๋๋ ์ด ๊ณ์ฝ ๋ถ๋ถ๋ง ๋ด ๋๋ค. ๊ทธ ์ธ Java ๋ด๋ถ ๋ก์ง์ ์ด ์คํฌ์ ๋ฒ์๊ฐ ์๋๋ผ๊ณ ๋ฐํ์ธ์.)
3e. ํ๋จ์ด ์ ์๋ฉด "๋ชจ๋ฅด๊ฒ ๋ค"๊ฐ ์ ๋ต์ด๋ค
์ฝ๋๋ง์ผ๋ก ํ์ ์ด ์ ์๋ฉด ์ถ์ธก์ผ๋ก โ ํ์ง ๋ง๊ณ ๊ทธ ํญ๋ชฉ์ "ํ์ธ ํ์"๋ก ๋จ๊ธฐ๊ณ , ์ฌ์ฉ์๊ฐ ๋ฌด์์ ์ด๋ป๊ฒ ํ์ธํ๋ฉด ๋๋์ง ์๋ ค์ค๋๋ค (์: "dev ์๋ฒ์์ A ํ๋ฉด โ B ํด๋ฆญ ์์๋ก ํ์ธ"). ๋จธ์ง ์ฌ๋ถ๋ฅผ ์๋ชป ํต๊ณผ์ํค๋ ๋น์ฉ์ด, ํ ๋ฒ ๋ ํ์ธํ๋ ๋น์ฉ๋ณด๋ค ํจ์ฌ ํฝ๋๋ค.
4๋จ๊ณ: PR์ด ์๋ํ ๋์์ ์ ํํ ํ๋๊ฐ
1๋จ๊ณ ์์ฝ์์ ์ ๋ฆฌํ "์ด PR์ด ํ๋ ค๋ ๋ฌธ์ "๋ฅผ ๋ค์ ๊บผ๋ด ๋์กฐํฉ๋๋ค.
- ์ด์์ ์ ํ ์ฆ์์ด ์ด ๋ณ๊ฒฝ์ผ๋ก ์ค์ ๋ก ํด์๋๋๊ฐ (์ฝ๋๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ํ์ธ)
- ํดํผ ํจ์ค๋ฟ ์๋๋ผ ๋น ๋ฐ์ดํฐ ยท ๋ก๋ฉ ยท ์ค๋ฅ ยท ๊ฒฝ๊ณ๊ฐ์์๋ ์๋๋๋ก ๋์ํ๋๊ฐ
- ๋ฌธ์ ๋ฅผ ๊ทผ๋ณธ์์ ๊ณ ์ณค๋๊ฐ, ์ฆ์๋ง ๊ฐ๋ ธ๋๊ฐ
- ๋์น ์ผ์ด์ค๊ฐ ์๋๊ฐ (์: ํ ํ๋ฉด๋ง ๊ณ ์น๊ณ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฐ์ง ๋ค๋ฅธ ํ๋ฉด์ ๊ทธ๋๋ก)
๊น์ ๋์ QA๊ฐ ํ์ํ๋ฉด /qa-pr ์ ์ฒดํฌ๋ฆฌ์คํธ(์ฃ์ง ์ผ์ด์ค, ์ํ ๋ฌด๊ฒฐ์ฑ, ์ปดํฌ๋ํธ ์ํธ์์ฉ)๋ฅผ ํ์ฉํฉ๋๋ค.
5๋จ๊ณ: ๊ทธ ๋ฐ์ ๋จธ์ง ์ ์ ๋ด์ผ ํ๋ ๊ฒ๋ค
- ์ฝ๋ ์คํ์ผ ์ผ๊ด์ฑ โ
.claude/rules/code-style.md,/review-code์ฒดํฌ๋ฆฌ์คํธ ๊ธฐ์ค. ํฌ๋งทํ ๋ฟ ์๋๋ผ ์ฃผ๋ณ ์ฝ๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฐ์๋๊ฐ๋ฅผ ๋ด ๋๋ค (๊ฐ์ ์ผ์ ๋ค๋ฅธ ํจํด์ผ๋ก ํ๋ ์ฝ๋๊ฐ ์์ด๋ฉด ๋ค์ ์ฌ๋์ด ์ด๋ ์ชฝ์ ๋ฐ๋ผ์ผ ํ ์ง ๋ชจ๋ฅด๊ฒ ๋ฉ๋๋ค). - ์ํคํ
์ฒ ์์น โ ๋ผ์ฐํ
์
apps/web, ๋๋จธ์ง๋packages/ui. ํ ยท์ํฐยท์์๊ฐ ์ ์๋ฆฌ์ ์๋๊ฐ. - ๋จ์ ์๋ ๋๋ฒ๊ทธ ์ฝ๋ โ
console.log, ์ฃผ์ ์ฒ๋ฆฌ๋ ์ฝ๋,TODO, ์์ ํ๋์ฝ๋ฉ:git diff upstream/master...HEAD -- '*.ts' '*.tsx' | grep -nE '^\+.*(console\.(log|debug)|debugger|FIXME|XXX)' - ์ปค๋ฐ ๋ฉ์์ง ๊ท์ฝ โ
[#issue_number] Description, ์์ด (.claude/rules/git-workflow.md) - PR ๋ฒ์ โ ์ด์์ ๋ฌด๊ดํ ๋ณ๊ฒฝ์ด ์์ฌ ์์ง ์์๊ฐ
- ํ ์คํธ โ ์ํฐยท์ ํธยทAPI ํ ยท๋ผ์ฐํธ ๋ก๋๊ฐ ๋ฐ๋์๋๋ฐ ํ ์คํธ๊ฐ ์์ผ๋ฉด ์ง์ ํฉ๋๋ค (ํต์ฌ ๊ฒฝ๋ก)
- ํ์
์์ ์ฑ โ ์๋ก ๋ค์ด์จ
any, ์ํํ ๋จ์ธ(as), ๋ฌด์๋ null ์ฒดํฌ - ์ฑ๋ฅ โ ๋ถํ์ํ ๋ฆฌ๋ ๋, ๋๋ฝ๋
useEffectํด๋ฆฐ์ , ํฐ ๋ชฉ๋ก์ ๋นํจ์จ ์ฒ๋ฆฌ
6๋จ๊ณ: ์ง์ ๋์ผ๋ก ํ์ธํ ํ๋ฉด ๋ชฉ๋ก์ ๋ง๋ ๋ค (ํ์)
์ฝ๋ ์ถ์ ยท๋น๋ยทํ
์คํธ๋ก๋ ์ค์ ๋ก ํ๋ฉด์ ๋ฌด์์ด ๊ทธ๋ ค์ง๋์ง๋ฅผ ์ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ด ์คํฌ์
"ํ์ธ ๋ชป ํ๋ค"๋ก ๋๋ด์ง ์๊ณ , ์ฌ์ฉ์๊ฐ yarn dev๋ก ๋ฌด์์ ์ด์ด ๋ฌด์์ ๋ด์ผ ํ๋์ง๋ฅผ ํญ์
๋ชฉ๋ก์ผ๋ก ๋ด๋์ต๋๋ค. ๋ชฉ๋ก์ด ์์ผ๋ฉด ์ฌ์ฉ์๋ ์ด๋์๋ถํฐ ๋ด์ผ ํ ์ง ๋ชฐ๋ผ ๊ฒฐ๊ตญ ์๋ฌด๊ฒ๋ ํ์ธํ์ง ์์ต๋๋ค.
yarn dev # ํฌํธ 3000. /api/*๋ localhost:8080(๋ฐฑ์๋)๋ก ํ๋ก์๋๋ฏ๋ก ๋ฐฑ์๋๊ฐ ๋ ์์ด์ผ ๋ฐ์ดํฐ๊ฐ ๋ณด์ธ๋ค
ํ๋ฉด ๋ชฉ๋ก์ ๋ฝ๋ ๋ฐฉ๋ฒ
๋ณ๊ฒฝ๋ ํ์ผ์์ ํ๋ฉด๊น์ง ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋๋ค. ์ปดํฌ๋ํธยทํ
์ ๊ทธ ์์ฒด๋ก ํ๋ฉด์ด ์๋๋ฏ๋ก, ์ฌ์ฉ์ฒ๋ฅผ
๋ฐ๋ผ pages/์ ๋ผ์ฐํธ๊น์ง ์ฌ๋ผ๊ฐ์ผ ์ด๋ค ์ฃผ์๋ฅผ ์ด์ด์ผ ํ ์ง ๋์ต๋๋ค.
# ๋ณ๊ฒฝ๋ ์ปดํฌ๋ํธ/ํ
์ ๋๊ฐ ์ฐ๋์ง โ ๊ทธ ์ฌ์ฉ์ฒ๋ฅผ ๋ ๋๊ฐ ์ฐ๋์ง (pages/ ๊น์ง)
git grep -n "๋ณ๊ฒฝ๋์ปดํฌ๋ํธ\|๋ณ๊ฒฝ๋ํ
" -- '*.tsx' '*.ts'
์ฃผ์๋ packages/ui/src/constants/path.ts์ APP_PATH์์ ํ์ธํฉ๋๋ค.
๋ชฉ๋ก์ ๋ฐ๋์ ๋ค์ด๊ฐ์ผ ํ๋ ๊ฒ
- ๊ธฐ์กด ํ๋ฉด (ํ๊ท ํ์ธ) โ ์ด๋ฒ์ ๋ฐ๋ ๊ณต์ฉ ์ฝ๋๋ฅผ ์ฐ๋ ๋ชจ๋ ๊ธฐ์กด ํ๋ฉด. ์ ๊ธฐ๋ฅ ํ๋ฉด๋ณด๋ค
๋จผ์ ์ ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์ ์ผ ๊ฑฑ์ ํ๋ ๊ฑด "์ ์ฐ๋ ๊ฒ ๊นจ์ก๋"์
๋๋ค.
๊ณต์ฉ ์ฝ๋(
hooks/api,atoms,utils, ๊ณต์ ์ปดํฌ๋ํธ)๋ฅผ ๊ฑด๋๋ ธ๋ค๋ฉด ์๋น ํ๋ฉด์ด ์ฌ๋ฌ ๊ฐ์ผ ํ ๋ ์ํ๋งํ์ง ๋ง๊ณ ๋ค ์ ์ต๋๋ค. - ์ ๊ธฐ๋ฅ ํ๋ฉด (์๋ ํ์ธ) โ ์ด PR์ด ๋ง๋ ๋์. PR ๋ณธ๋ฌธ์ ํ ์คํธ ๊ณํ์ ์์ผ๋ฉด ๊ทธ๊ฒ์ ์ฌ์ฌ์ฉํฉ๋๋ค.
- ์ค์ ํ๋๊ทธ๊ฐ ์์ผ๋ฉด ์์ชฝ ๋ค โ ์ผ ์ํ์ ๋ ์ํ. ๋ ์ชฝ์ด ๊ธฐ์กด ์ฌ์ฉ์์ ํ๋ฉด์ด๋ฏ๋ก ๋ ์ค์ํฉ๋๋ค.
- ์ฝ๋๋ก ํ์ ์ด ์ ์ฐ๋ ํญ๋ชฉ (3e์์ ๋จ๊ธด ๊ฒ) โ ๊ทธ๊ฒ ๋ฐ๋ก ๋์ผ๋ก ๋ด์ผ ํ๋ ๊ฒ์ ๋๋ค.
๊ฐ ํญ๋ชฉ์ **"๋ฌด์์ ๋ณด๋ฉด ์ ์์ธ์ง"**๊น์ง ์ ์ต๋๋ค. "servermap ํ์ธ" ๊ฐ์ ๋ฌธ์ฅ์ ๋์์ด ์ ๋ฉ๋๋ค. "๋ ธ๋๋ฅผ ํด๋ฆญํ๋ฉด ์ค๋ฅธ์ชฝ ํจ๋์ ๊ทธ ๋ ธ๋ ์ด๋ฆ๊ณผ ์ฐจํธ๊ฐ ๋จ๋์ง" ์ฒ๋ผ ํ์ ๊ฐ๋ฅํ ๋ฌธ์ฅ์ผ๋ก ์๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์๋๊ตฌ ๋คํธ์ํฌ ํญ์์ ๋ณผ ๊ฒ์ด ์์ผ๋ฉด(400 ์๋ต, ์ค๋ณต ์์ฒญ ๋ฑ) ๊ทธ๊ฒ๋ ์ ์ต๋๋ค.
7๋จ๊ณ: ๋ณด๊ณ (๋ํ์ฐฝ, ํ๊ตญ์ด)
ํญ์ ์ด ๊ตฌ์กฐ๋ก ๋ณด๊ณ ํฉ๋๋ค. ์์ฝ์ด ํ์ ๋ณด๋ค ๋จผ์ ์ค๋ ์์๋ฅผ ์งํต๋๋ค โ ์ฌ์ฉ์๋ "๋ฌด์์ ํ PR์ธ์ง" ์ดํดํ ๋ค์ ํ์ ์ ๋ด์ผ ๊ทธ ํ์ ์ ์ ๋ขฐํ ์ ์์ต๋๋ค.
## 1. ์ด PR์ด ํ ์ผ
- **๋ชฉ์ **: (์ด์/PR ๋ณธ๋ฌธ ๊ธฐ์ค, ํ๋ ๋ฌธ์ฅ)
- **๋ฐ๊พผ ๊ฒ**: (ํ์ผ N๊ฐ / +A โB ์ค, ํต์ฌ ๋ณ๊ฒฝ 3~5๊ฐ๋ฅผ ์ฌ์ด ๋ง๋ก)
- **์๋์ diff์ ์ฐจ์ด**: (์์ผ๋ฉด "์์")
## 2. ๊ฒ์ฆ ๊ฒฐ๊ณผ
| ํญ๋ชฉ | ๊ฒฐ๊ณผ |
|---|---|
| upstream/master ๋ณํฉ | ์ถฉ๋ ์์ / ์ถฉ๋ (ํ์ผ) |
| yarn build | ํต๊ณผ / ์คํจ |
| yarn test | ํต๊ณผ / ์คํจ (N๊ฑด, ์ด PR ๋๋ฌธ์ธ์ง ์ฌ๋ถ) |
| yarn lint | ํต๊ณผ / ์คํจ |
| CI | ์ํ |
## 3. ๊ธฐ์กด ๊ธฐ๋ฅ ํ๊ท ์ ๊ฒ (๊ฐ์ฅ ์ค์)
**master์ ์ ๋ณ๊ฒฝ๊ณผ์ ์ถฉ๋**: ์ ์ปค๋ฐ N๊ฐ โ ๊ฒน์น๋ ๊ฒ๋ง๋ค ํ๋จ + ๊ทผ๊ฑฐ (์์ผ๋ฉด "๊ฒน์นจ ์์")
**์ํ ๋ณ๊ฒฝ๋ง๋ค**: (ํญ๋ชฉ) โ ์ฌ์ฉ์ฒ N๊ณณ ์ค M๊ณณ ํ์ธ โ ํ๋จ + ๊ทผ๊ฑฐ (`ํ์ผ:๋ผ์ธ`)
**ํ์ธํ์ง ๋ชปํ ๊ฒ**: (ํญ๋ชฉ) โ ์ ํ์ธ ๋ชป ํ๋์ง (โ 6๋ฒ ๋ชฉ๋ก์ผ๋ก ๋๊ธด๋ค)
## 4. ๋์ ์ ํ์ฑ
- ์๋ํ ๋ฌธ์ ๊ฐ ํด์๋๋๊ฐ: ํ๋จ + ๊ทผ๊ฑฐ
- ์ฃ์ง ์ผ์ด์ค: ํ์ธ ๊ฒฐ๊ณผ
## 5. ๊ทธ ์ธ (์คํ์ผ ยท ๊ตฌ์กฐ ยท ๊ธฐํ)
์ฌ๊ฐ๋ ์์ผ๋ก: Critical / Warning / Suggestion
## 6. ์ง์ ํ์ธํ ํ๋ฉด (`yarn dev`)
๊ธฐ์กด ํ๋ฉด โ ํ๊ท ํ์ธ:
| ํ๋ฉด | ์ฃผ์ | ๋ฌด์์ ๋ณด๋ฉด ์ ์์ธ์ง |
|---|---|---|
| (ํ๋ฉด ์ด๋ฆ) | `/๊ฒฝ๋ก/...` | (ํ์ ๊ฐ๋ฅํ ๋ฌธ์ฅ) |
์ ๊ธฐ๋ฅ โ ์๋ ํ์ธ:
| ํ๋ฉด | ์ฃผ์ | ๋ฌด์์ ๋ณด๋ฉด ์ ์์ธ์ง |
|---|---|---|
## 7. ํ์
**โ
๋จธ์ง ๊ฐ๋ฅ** / **โ ๏ธ ์กฐ๊ฑด๋ถ** / **โ ๋จธ์ง ๋ถ๊ฐ**
- ์ด์ : (ํ๋ ๋ฌธ์ฅ)
- ๋จธ์ง ์ ์ ํด์ผ ํ ์ผ: (์์ผ๋ฉด ๋ชฉ๋ก)
ํ์ ๊ธฐ์ค
- โ ๋จธ์ง ๋ถ๊ฐ โ ๋น๋ยทํ ์คํธ ์คํจ, ๊ธฐ์กด ๊ธฐ๋ฅ์ด ๊นจ์ง ๊ฒ์ ํ์ธํ์, ๋จธ์ง ์ถฉ๋ ๋ฏธํด๊ฒฐ
- โ ๏ธ ์กฐ๊ฑด๋ถ โ ํ๊ท ์ํ์ด ์๋๋ฐ ์ฝ๋๋ง์ผ๋ก๋ ํ์ ํ ์ ์์, CI ๊ฒ์ฌ(ํ์ง ๊ฒ์ดํธ ๋ฑ)๊ฐ ๋นจ๊ฐ๋ถ, ๋๋ ๊ณ ์ณ์ผ ํ ๋ฌธ์ ๊ฐ ๋จ์์ง๋ง ์น๋ช ์ ์ด์ง ์์. ๋ฌด์์ ํ์ธยท์์ ํ๋ฉด โ ๊ฐ ๋๋์ง ๋ฐ๋์ ์ ์ต๋๋ค.
- โ ๋จธ์ง ๊ฐ๋ฅ โ ๊ฒ์ฆยทCI ํต๊ณผ + ์ํ ๋ณ๊ฒฝ์ ์ฌ์ฉ์ฒ๋ฅผ ํ์ธํ๊ณ ๋ฌธ์ ์์
6๋ฒ์ ํ๋ฉด ๋ชฉ๋ก์ ํ์ ๊ณผ ๋ฌด๊ดํ๊ฒ ํญ์ ๋ด๋์ต๋๋ค. โ ๋ผ๋ "์ฝ๋๋ก๋ ๋ฌธ์ ๋ฅผ ๋ชป ์ฐพ์๋ค"๋ ๋ป์ด์ง "ํ๋ฉด์ ๋ดค๋ค"๋ ๋ป์ ์๋๊ณ , ๊ทธ ์ฐจ์ด๋ฅผ ์ฌ์ฉ์๊ฐ ์์์ผ ์ค์ค๋ก ํ๋จํ ์ ์์ต๋๋ค.
์ ๋งคํ๋ฉด โ ๋ฅผ ์ฃผ์ง ๋ง์ธ์. โ ๏ธ ๋ ์ฌ์ฉ์๊ฐ 5๋ถ ๋ ํ์ธํ๊ฒ ๋ง๋ค์ง๋ง, ์๋ชป๋ โ ๋ ๊นจ์ง ์ฝ๋๋ฅผ ๋ฐฐํฌํฉ๋๋ค. ๋ค๋ง ๊ทผ๊ฑฐ ์์ด โ ๏ธ ๋ฅผ ๋จ๋ฐํ๋ ๊ฒ๋ ๋์์ด ๋์ง ์์ต๋๋ค โ โ ๏ธ ์๋ ํญ์ "๋ฌด์์ ํ์ธํด์ผ ํ๋์ง"๊ฐ ๋ถ์ด์ผ ํฉ๋๋ค.
๋ง์ง๋ง ์ ๋ฆฌ
- ๋ธ๋์น๋ฅผ ์ฎ๊ฒผ๋ค๋ฉด ์๋ ๋ธ๋์น๋ก ๋ณต๊ทํ๋์ง ํ์ธํ๊ณ ๋ณด๊ณ ์ ํ ์ค ์ ์ต๋๋ค.
git merge --abort, stash ๋ณต์ ๋ฑ ์์ ์ํ๊ฐ ๋จ์ง ์์๋์ง ํ์ธํฉ๋๋ค.- ์ฌ์ฉ์๊ฐ PR ์ฝ๋ฉํธ๋ Approve๋ฅผ ์ํ๋ฉด ๊ทธ๋ ํ์ธ์ ๋ฐ๊ณ ๋จ๊น๋๋ค. ๋ณธ๋ฌธ์ ์์ด์
๋๋ค
(
.claude/rules/git-workflow.md).