Git Worktree = ์์ ํ ์คํ ๊ณต๊ฐ
์ฝ๋๋ฅผ ์์ ํ๋ค๊ฐ โ์, ์ด๊ฑฐ ์๋ชป ๊ฑด๋๋ ธ๋คโ ์ถ์ ๋ ์์์์? ๋๋๋ฆฌ๋ ค ํด๋ ์ด๋๊น์ง ๋ฐ๊ฟจ๋์ง ๊ธฐ์ต์ด ์ ๋๊ณ , ์๋ณธ์ด ๋ง๊ฐ์ง๊น ๋ด ๋ถ์ํ๊ณ . ์ด๋ฐ ๊ฒฝํ, ๋ค๋ค ์์ ๊ฑฐ์์.
Git Worktree๋ ์ด ๋ฌธ์ ๋ฅผ ๊น๋ํ๊ฒ ํด๊ฒฐํด์ค์. ์๋ณธ ์ฝ๋๋ ๊ทธ๋๋ก ๋๊ณ , ์์ ์์ ํ ๋ ๋ฆฝ๋ ๋ณต์ฌ๋ณธ์ ๋ง๋ค์ด์ ๊ฑฐ๊ธฐ์ ๋ง์๊ป ์คํํ๋ ๊ฑฐ์์.
๋น์ ํ๋ฉด ๋ชจ๋ธํ์ฐ์ค์ ๊ฐ์์. ์ค์ ๋ก ์ด๊ณ ์๋ ์ฐ๋ฆฌ ์ง(์๋ณธ)์ ๊ฑด๋๋ฆฌ์ง ์๊ณ , ๋ฐ๋ก ์์ ๋ชจ๋ธํ์ฐ์ค(์ํฌํธ๋ฆฌ)๋ฅผ ์ง์ด์ ์ธํ ๋ฆฌ์ด๋ฅผ ๋ฐ๊ฟ๋ณด๊ณ , ๋ฒฝ์ง๋ฅผ ๋ฐ๊ฟ๋ณด๊ณ , ๊ฐ๊ตฌ๋ฅผ ์ฎ๊ฒจ๋ณด๋ ๊ฑฐ์์. ๋ง์์ ๋ค๋ฉด ์ฐ๋ฆฌ ์ง์๋ ์ ์ฉํ๊ณ , ๋ง์์ ์ ๋ค๋ฉด ๋ชจ๋ธํ์ฐ์ค๋ฅผ ์ฒ ๊ฑฐํ๋ฉด ๋์ด์์.
| ๋ชจ๋ธํ์ฐ์ค | Git Worktree |
|---|---|
| ์๋ณธ ์ง์ ๊ทธ๋๋ก ์ ์ง | ์๋ณธ ์ฝ๋(main ๋ธ๋์น)๋ ๊ทธ๋๋ก |
| ์์ ๋ชจ๋ธํ์ฐ์ค๋ฅผ ์ง์ | ์์ ์ ์์ ํด๋๋ฅผ ์์ฑ |
| ์ธํ ๋ฆฌ์ด๋ฅผ ์์ ๋กญ๊ฒ ์คํ | ์ฝ๋๋ฅผ ๋ง์๊ป ์์ /์คํ |
| ๋ง์์ ๋ค๋ฉด ์ฐ๋ฆฌ ์ง์ ์ ์ฉ | ๋ง์์ ๋ค๋ฉด merge(ํฉ์น๊ธฐ) |
| ๋ง์์ ์ ๋ค๋ฉด ์ฒ ๊ฑฐ | ๋ง์์ ์ ๋ค๋ฉด ํด๋ ์ญ์ |
| ์ฐ๋ฆฌ ์ง์ ์ํฅ ์์ | ์๋ณธ ๋ธ๋์น์ ์ํฅ ์์ |
ํ ์ค ์์ฝ
Git Worktree = ์๋ณธ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ์์ ํ๊ฒ ์คํํ ์ ์๋ ๋ณ๋ ๊ณต๊ฐ. ์คํ์ด ์ฑ๊ณตํ๋ฉด ํฉ์น๊ณ , ์คํจํ๋ฉด ์ญ์ ํ๋ฉด ๋ผ์.
์ Worktree๊ฐ ํ์ํ ๊น?
โ๊ทธ๋ฅ ๋ธ๋์น ๋ง๋ค๋ฉด ๋์ง ์์?โ๋ผ๊ณ ์๊ฐํ ์ ์์ด์. ๋ง์์, ๋ธ๋์น๋ ์คํ์ฉ์ผ๋ก ์ธ ์ ์์ด์. ํ์ง๋ง Worktree๋ ๋ธ๋์น๋ณด๋ค ํจ์ฌ ํธํ ์ ์ด ์์ด์.
๐
ํด๋๊ฐ ๋ฐ๋ก ์์ด์
์ผ๋ฐ ๋ธ๋์น๋ ๊ฐ์ ํด๋ ์์์ ์ ํํด์ผ ํด์. Worktree๋ ์์ ํ ๋ค๋ฅธ ํด๋์ ๋ง๋ค์ด์ ธ์. ์๋ณธ ํด๋์ ์คํ ํด๋๋ฅผ ๋์์ ์ด์ด๋ ์ ์์ด์.
โ
์๋ณธ์ด ํญ์ ์์ ํด์
์คํํ๋ค ๋ญ๊ฐ ์๋ชป๋์ด๋ ์๋ณธ ํด๋์๋ ์๋ฌด ์ํฅ์ด ์์ด์. ์ฌ๋ฆฌ์ ์์ ๊ฐ์ด ์์ ํ ๋ฌ๋ผ์. โ์ผ๋จ ํด๋ณด์โ๊ฐ ๊ฐ๋ฅํด์ ธ์.
๐
์ ํ ์์ด ๋์ ์์
๋ธ๋์น๋ ํ๋์ฉ ์ ํํด์ผ ํ์ง๋ง, Worktree๋ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋์์ ์ด ์ ์์ด์. ๊ธฐ๋ฅ A ๋ง๋ค๋ฉด์, ๊ธฐ๋ฅ B๋ ๋์์ ํ ์คํธํ ์ ์์ด์.
๐
๊น๋ํ ์ ๋ฆฌ
์คํ์ด ๋๋๋ฉด ํด๋๋ฅผ ์ญ์ ํ๋ฉด ๋์ด์์. ๋ณต์กํ git ๋ช ๋ น์ด๊ฐ ํ์ ์์ด์. ๋ง์น ์์ ํด๋๋ฅผ ๋ง๋ค์๋ค ์ง์ฐ๋ ๊ฒ์ฒ๋ผ ๊ฐ๋จํด์.
๋ธ๋์น ์ ํ vs Worktree โ ๋น๊ต
| ํญ๋ชฉ | ๋ธ๋์น ์ ํ (checkout) | Worktree |
|---|---|---|
| ์์ ๋ฐฉ์ | ๊ฐ์ ํด๋์์ ๋ธ๋์น ์ ํ | ๋ณ๋ ํด๋์ ๋ ๋ฆฝ ์์ ๊ณต๊ฐ |
| ๋์ ์์ | ํ ๋ฒ์ ํ๋๋ง | ์ฌ๋ฌ ๊ฐ ๋์์ ๊ฐ๋ฅ |
| ์๋ณธ ์์ ์ฑ | ์ ํ ์ ํ์ผ์ด ๋ฐ๋ | ์๋ณธ ํด๋๋ ์ ํ ์ ๋ฐ๋ |
| ์ ๋ฆฌ | ๋ธ๋์น ์ญ์ (git branch -d) | ํด๋ ์ญ์ + git worktree remove |
| ๋ณต์ก๋ | git checkout, stash ๋ฑ ํ์ | ํด๋ ์ด๊ธฐ/๋ซ๊ธฐ ์์ค |
| ์ถ์ฒ ์ํฉ | ๋น ๋ฅธ ์์ | ์คํ, ํฐ ๊ธฐ๋ฅ ๊ฐ๋ฐ, ํ ์์ |
์ธ์ Worktree๋ฅผ ์ฐ๋ฉด ์ข์๊น?
โข ์ ๊ธฐ๋ฅ์ ์คํํ๊ณ ์ถ์ ๋
โข ํฐ ๋ณ๊ฒฝ์ ํ๋๋ฐ ์๋ณธ์ด ๋ง๊ฐ์ง๊น ๊ฑฑ์ ๋ ๋
โข ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋์์ ๊ฐ๋ฐํด์ผ ํ ๋
โข Claude Code์ Agent Teams์ ํจ๊ป ์ธ ๋ (๋ค์์ ์ค๋ช
ํด์)
Worktree = ๋ชจ๋ธํ์ฐ์ค
์๋ณธ ์ง(์ฝ๋)์ ๊ทธ๋๋ก, ์์์ ์์ ๋กญ๊ฒ ์คํํ์ธ์
Worktree ๋ง๋ค๊ธฐ โ /worktree ํ ์ค์ด๋ฉด ๋
Claude Code์์๋ Worktree๋ฅผ ๋ง๋๋ ๊ฒ์ด ์ ๋ง ์ฌ์์. ์ฌ๋์ ๋ช ๋ น์ด ํ๋๋ฉด ๋ฉ๋๋ค.
๋ฐฉ๋ฒ 1: Claude Code ์ฌ๋์ ๋ช ๋ น์ด (๊ฐ์ฅ ์ฌ์)
/worktree์ด๋ ๊ฒ ์ ๋ ฅํ๋ฉด Claude Code๊ฐ ์์์ ์ ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ , ์ํฌํธ๋ฆฌ ํด๋๋ฅผ ์์ฑํ๊ณ , ๊ฑฐ๊ธฐ๋ก ์ด๋๊น์ง ํด์ค์. ํ ์ค์ด๋ฉด ๋์ด์์.
๋ฐฉ๋ฒ 2: ์ง์ git ๋ช ๋ น์ด ์ฌ์ฉ
์ฌ๋์ ๋ช ๋ น์ด ์์ด ์ง์ ํ๊ณ ์ถ๋ค๋ฉด, git ๋ช ๋ น์ด๋ฅผ ์ธ ์๋ ์์ด์.
# ์์ ํด๋์ ์ ์ํฌํธ๋ฆฌ ์์ฑ
git worktree add ../my-experiment feat/new-feature
# ์ค๋ช
:
# ../my-experiment โ ์ํฌํธ๋ฆฌ๊ฐ ๋ง๋ค์ด์ง ํด๋ ๊ฒฝ๋ก
# feat/new-feature โ ์ ๋ธ๋์น ์ด๋ฆ# ์ํฌํธ๋ฆฌ ํด๋๋ก ์ด๋
cd ../my-experiment
# ์ฌ๊ธฐ์ ์์ ๋กญ๊ฒ ์์
!
# ์๋ณธ ํด๋์ ์์ ํ ๋
๋ฆฝ๋์ด ์์ด์.์ ์ฒด ํ๋ฆ โ 4๋จ๊ณ
/worktree ๋๋ git worktree add ๋ช ๋ น์ด๋ก ์ ์์ ๊ณต๊ฐ์ ๋ง๋ค์ด์
์ํฌํธ๋ฆฌ ํด๋์์ ์์ ๋กญ๊ฒ ์ฝ๋๋ฅผ ์์ ํ๊ณ ์คํํด์
๋ง์์ ๋ค๋ฉด merge(ํฉ์น๊ธฐ), ๋ง์์ ์ ๋ค๋ฉด ์ญ์
git worktree remove๋ก ๊น๋ํ๊ฒ ์ํฌํธ๋ฆฌ ์ ๊ฑฐ
๊ด๋ฆฌ ๋ช ๋ น์ด โ ์ด๊ฒ๋ง ์๋ฉด ๋ผ์
| ๋ช ๋ น์ด | ์ค๋ช |
|---|---|
git worktree list | ํ์ฌ ์ํฌํธ๋ฆฌ ๋ชฉ๋ก ๋ณด๊ธฐ |
git worktree add ../ํด๋ ๋ธ๋์น์ด๋ฆ | ์ ์ํฌํธ๋ฆฌ ์์ฑ |
git worktree remove ../ํด๋ | ์ํฌํธ๋ฆฌ ์ ๊ฑฐ |
git worktree prune | ์ญ์ ๋ ํด๋์ ์ํฌํธ๋ฆฌ ์ ๋ฆฌ |
git worktree list
# ์ถ๋ ฅ ์์:
# /home/user/my-project abc1234 [main]
# /home/user/my-experiment def5678 [feat/new-feature]์คํ์ด ๋ง์์ ๋ค ๋ โ merge(ํฉ์น๊ธฐ)
# 1. ์ํฌํธ๋ฆฌ์์ ๋ณ๊ฒฝ ์ฌํญ ์ปค๋ฐ
cd ../my-experiment
git add .
git commit -m "์ ๊ธฐ๋ฅ ์์ฑ"
# 2. ์๋ณธ ํด๋๋ก ๋์๊ฐ์ merge
cd ../my-project
git merge feat/new-feature
# 3. ์ํฌํธ๋ฆฌ ์ ๋ฆฌ
git worktree remove ../my-experiment
git branch -d feat/new-feature์คํ์ด ๋ง์์ ์ ๋ค ๋ โ ์ญ์
# ์ํฌํธ๋ฆฌ ์ญ์ (ํด๋๋ ํจ๊ป ์ญ์ ๋จ)
git worktree remove ../my-experiment
# ๋ธ๋์น๋ ์ญ์ (์ ํ)
git branch -D feat/new-feature
# ๋! ์๋ณธ์ ์๋ฌด๊ฒ๋ ์ ๋ฐ๋์ด ์์ด์.Claude Code๊ฐ ๋ค ํด์ค์
์์ git ๋ช ๋ น์ด๋ฅผ ์ธ์ธ ํ์ ์์ด์. Claude Code์๊ฒ โ์ํฌํธ๋ฆฌ ๋ง๋ค์ด์คโ, โ์คํ ๊ฒฐ๊ณผ ํฉ์ณ์คโ, โ์ํฌํธ๋ฆฌ ์ญ์ ํด์คโ๋ผ๊ณ ํ๊ตญ์ด๋ก ๋งํ๋ฉด ์์์ ํด์ค์.
Agent Teams์ ์กฐํฉํ๊ธฐ
Worktree์ ์ง์ง ํ์ Agent Teams์ ํจ๊ป ์ธ ๋ ๋์์. Agent Teams๋ Claude Code๊ฐ ์ฌ๋ฌ โํ์(์์ด์ ํธ)โ์ ๋ง๋ค์ด์ ๋์์ ์์ ํ๋ ๊ธฐ๋ฅ์ด์์.
๋ฌธ์ ๋, ์ฌ๋ฌ ์์ด์ ํธ๊ฐ ๊ฐ์ ํด๋์์ ๋์์ ์์ ํ๋ฉด ์๋ก ํ์ผ์ ๋ฎ์ด์ฐ๊ฑฐ๋ ์ถฉ๋์ด ๋ ์ ์๋ค๋ ๊ฑฐ์์. ๋ง์น ์๋ฆฌ์ฌ 3๋ช ์ด ๊ฐ์ ๋๋ง ํ๋์์ ๋์์ ์นผ์งํ๋ ๊ฒ๊ณผ ๊ฐ์์. ์ํํ์ฃ ?
๊ทธ๋์ Agent Teams๋ ๊ฐ ์์ด์ ํธ์๊ฒ ๋ณ๋์ ์ํฌํธ๋ฆฌ๋ฅผ ์ค์. ์๋ฆฌ์ฌ๋ง๋ค ์๊ธฐ ๋๋ง๋ฅผ ๊ฐ๋ ๊ฑฐ์์. ๊ฐ์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ ํ๊ณ , ๋ค ๋๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํฉ์น๋ ๋ฐฉ์์ด์์.
์์: ์น์ฌ์ดํธ 3๊ฐ ํ์ด์ง๋ฅผ ๋์์ ๋ง๋ค๊ธฐ
Worktree ์์ด
ํ์ด์ง A ๋ง๋ค๊ธฐ โ ์์ฑ โ ํ์ด์ง B ๋ง๋ค๊ธฐ โ ์์ฑ โ ํ์ด์ง C ๋ง๋ค๊ธฐ. ์์ฐจ ์์ ์ด๋ผ ์๊ฐ์ด 3๋ฐฐ ๊ฑธ๋ ค์.
Worktree + Agent Teams
์์ด์ ํธ A(์ํฌํธ๋ฆฌ A), ์์ด์ ํธ B(์ํฌํธ๋ฆฌ B), ์์ด์ ํธ C(์ํฌํธ๋ฆฌ C)๊ฐ ๋์์ ์์ . 3๋ฐฐ ๋นจ๋ผ์!
Agent Teams + Worktree ์๋ ์๋ฆฌ
"ํ์ด์ง 3๊ฐ๋ฅผ ๋ง๋ค์ด์ค"๋ผ๊ณ ์ง์ํ๋ฉด, ๋ฉ์ธ ์์ด์ ํธ๊ฐ ์์ ์ ๋๋ ์
๊ฐ ํ์ ์์ด์ ํธ์๊ฒ ๋ ๋ฆฝ๋ ์ํฌํธ๋ฆฌ๊ฐ ์๋์ผ๋ก ๋ง๋ค์ด์ ธ์
๊ฐ์ ์๊ธฐ ์ํฌํธ๋ฆฌ์์ ์์ ํด์. ์๋ก ์ถฉ๋ํ ๊ฑฑ์ ์ด ์์ด์
๋ชจ๋ ์์ ์ด ๋๋๋ฉด ๋ฉ์ธ ์์ด์ ํธ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ํ๋๋ก ํฉ์ณ์
์ฐ๋ฆฌ ํ๋ก์ ํธ์ 3๊ฐ ํ์ด์ง๋ฅผ ๋์์ ๋ง๋ค์ด์ค.
1. ํํ์ด์ง - ํ์ด๋ก ์น์
+ ์๊ฐ + CTA
2. ์๋น์ค ํ์ด์ง - ์๋น์ค 3๊ฐ ์นด๋ํ ๋ ์ด์์
3. ํ ์๊ฐ ํ์ด์ง - ํ์ ํ๋กํ ๊ทธ๋ฆฌ๋
๊ฐ๊ฐ ๋
๋ฆฝ์ ์ผ๋ก ์์
ํ๊ณ , ์์ฑ๋๋ฉด mergeํด์ค.์ด๋ ๊ฒ ์ง์ํ๋ฉด Claude Code๊ฐ ์์์ ์ํฌํธ๋ฆฌ 3๊ฐ๋ฅผ ๋ง๋ค๊ณ , ์์ด์ ํธ 3๋ช ์ด ๋์์ ์์ ํ ๋ค, ๊ฒฐ๊ณผ๋ฅผ ํฉ์ณ์ค์. ์ฌ๋ฌ๋ถ์ ์ต์ข ๊ฒฐ๊ณผ๋ง ํ์ธํ๋ฉด ๋ผ์.
| ์์ ๋ฐฉ์ | ์์ฐจ ์์ | Agent Teams + Worktree |
|---|---|---|
| ํ์ด์ง 3๊ฐ ์ ์ | ์ฝ 30๋ถ (10๋ถ x 3) | ์ฝ 12๋ถ (๋์ ์์ ) |
| ๋ฒ๊ทธ ์์ 5๊ฐ | ์ฝ 25๋ถ (5๋ถ x 5) | ์ฝ 7๋ถ (๋์ ์์ ) |
| ํ ์คํธ ์ฝ๋ ์์ฑ | ์ฝ 40๋ถ (์์ฐจ) | ์ฝ 15๋ถ (๋ณ๋ ฌ) |
Agent Teams๋ Max ๊ตฌ๋ ์ ์ฉ์ด์์
Agent Teams ๊ธฐ๋ฅ์ Claude Max ๊ตฌ๋ ($100/์)์์ ์ฌ์ฉํ ์ ์์ด์. Pro ๊ตฌ๋ ($20/์)์์๋ 1๊ฐ์ ์์ด์ ํธ๋ง ์ฌ์ฉ ๊ฐ๋ฅํด์. ํ์ง๋ง Worktree ์์ฒด๋ Pro์์๋ ์ถฉ๋ถํ ์ธ ์ ์์ด์! ์ง์ git worktree ๋ช ๋ น์ด๋ก ๋ง๋ค๋ฉด ๋๋๊น์.
Worktree + Agent Teams = ๋ณ๋ ฌ ์์
๊ฐ ์์ด์ ํธ๊ฐ ๋ ๋ฆฝ ๊ณต๊ฐ์์ ๋์์ ์ผํ๊ณ , ๊ฒฐ๊ณผ๋ง ํฉ์น๋ฉด ๋
์ง์ ํด๋ณด๊ธฐ
Worktree๋ฅผ ์ง์ ๋ง๋ค์ด๋ณด์ธ์. git์ด ์ค์น๋์ด ์๊ณ , git์ผ๋ก ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ๊ฐ ์์ผ๋ฉด ๋ฐ๋ก ํ ์ ์์ด์.
์ค์ต 1: ์ํฌํธ๋ฆฌ ๋ง๋ค๊ณ ์คํํ๊ธฐ
๊ฐ๋จํ ์คํ์ฉ ์ํฌํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ณผ๊ฒ์.
# ๊ธฐ์กด ํ๋ก์ ํธ ํด๋์์ ์คํ
git worktree add ../my-test-experiment test/experiment
# ์์ฑ ํ์ธ
git worktree list# ์ํฌํธ๋ฆฌ ํด๋๋ก ์ด๋
cd ../my-test-experiment
# ์๋ฌด ํ์ผ์ด๋ ์์ ํด๋ณด๊ธฐ
echo "์คํ ์ค์
๋๋ค!" > test-file.txt
# ์ปค๋ฐ
git add .
git commit -m "์ํฌํธ๋ฆฌ ์คํ"# ์๋ณธ ํด๋๋ก ๋์๊ฐ์ ํ์ธ
cd ../my-project
# test-file.txt๊ฐ ์์ด์! ์๋ณธ์ ์์ ํด์.
ls test-file.txt
# ํ์ผ ์์!์ค์ต 2: Claude Code๋ก ์ํฌํธ๋ฆฌ ์ฌ์ฉํ๊ธฐ
Claude Code์์ ํจ์ฌ ๊ฐํธํ๊ฒ ํ ์ ์์ด์.
# ๋ฐฉ๋ฒ 1: ์ฌ๋์ ๋ช
๋ น์ด
/worktree
# ๋ฐฉ๋ฒ 2: ํ๊ตญ์ด๋ก ์ง์
์ํฌํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด์ ์ ๊ธฐ๋ฅ์ ์คํํด์ค.
ํํ์ด์ง ๋์์ธ์ ํ๋์ ํ
๋ง๋ก ๋ฐ๊ฟ๋ณด๊ณ ์ถ์ด.
๋ง์์ ์ ๋ค๋ฉด ์ญ์ ํ๋ฉด ๋๋๊น ๊ณผ๊ฐํ๊ฒ ํด์ค.์ค์ต 3: ์คํ ๊ฒฐ๊ณผ ํฉ์น๊ธฐ
์คํ์ด ๋ง์์ ๋ค๋ฉด ํฉ์น๋ ๊ฒ๋ Claude Code์๊ฒ ์ํค๋ฉด ๋ผ์.
๋ฐฉ๊ธ ์ํฌํธ๋ฆฌ์์ ๋ง๋ ํ๋์ ํ
๋ง๊ฐ ๋ง์์ ๋ค์ด.
์๋ณธ ํ๋ก์ ํธ์ mergeํด์ค.
๊ทธ๋ฆฌ๊ณ ์ํฌํธ๋ฆฌ๋ ์ ๋ฆฌํด์ค.ํ์ธ ์ฒดํฌ๋ฆฌ์คํธ
์ค์ต์ด ์ ๋๋ฉด git ์ ์ฅ์์ธ์ง ํ์ธํ์ธ์. ์ผ๋ฐ ํด๋์์๋ git worktree๊ฐ ๋์ํ์ง ์์์. git init์ผ๋ก git ์ ์ฅ์๋ฅผ ๋จผ์ ๋ง๋ค๊ฑฐ๋, ์ด๋ฏธ git์ผ๋ก ๊ด๋ฆฌํ๋ ํ๋ก์ ํธ์์ ํด๋ณด์ธ์.
ํ์ฉ ํ + ์ฃผ์์ฌํญ
Worktree๋ฅผ ์ค์ ์์ ์ธ ๋ ์์๋๋ฉด ์ข์ ํ๊ณผ ์ฃผ์์ฌํญ๋ค์ด์์.
1. git ์ ์ฅ์์์๋ง ๋์ํด์
Worktree๋ git ์ ์ฅ์์์๋ง ์ฌ์ฉํ ์ ์์ด์. git์ผ๋ก ๊ด๋ฆฌํ์ง ์๋ ์ผ๋ฐ ํด๋์์๋ ์ธ ์ ์์ด์. ์์ง git์ ์ ์ฐ๊ณ ์๋ค๋ฉด, git init์ผ๋ก ์ด๊ธฐํํ๊ฑฐ๋ Claude Code์๊ฒ โ์ด ํ๋ก์ ํธ๋ฅผ git์ผ๋ก ๊ด๋ฆฌํด์คโ๋ผ๊ณ ๋งํ์ธ์.
2. ๋์คํฌ ๊ณต๊ฐ์ ํ์ธํ์ธ์
์ํฌํธ๋ฆฌ๋ ํ๋ก์ ํธ์ ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ๊ฑฐ๋ผ์ ๋์คํฌ ๊ณต๊ฐ์ ์ฐจ์งํด์. ๋ค๋ง git์ด ๋๋ํ๊ฒ ๊ด๋ฆฌํด์, ์ ์ฒด ๋ณต์ฌ๋ณด๋ค๋ ํจ์ฌ ์ ์ ๊ณต๊ฐ๋ง ์ฌ์ฉํด์. ๊ทธ๋๋ 10๊ฐ์ฉ ๋ง๋ค์ด๋์ผ๋ฉด ์ฉ๋์ด ์์ผ ์ ์์ผ๋๋ค ์ด ์ํฌํธ๋ฆฌ๋ ๋ฐ๋ก ์ญ์ ํ์ธ์.
3. ์ด๋ฆ ๊ท์น์ ์ ํด๋๋ฉด ํธํด์
์ํฌํธ๋ฆฌ๊ฐ ์ฌ๋ฌ ๊ฐ ์์ด๋ฉด ๋ญ๊ฐ ๋ญ์ง ํท๊ฐ๋ฆด ์ ์์ด์. ํด๋ ์ด๋ฆ์ ๋ชฉ์ ์ ๋ฃ์ด๋๋ฉด ๊ด๋ฆฌ๊ฐ ์ฌ์์.
# ์ข์ ์ด๋ฆ (๋ชฉ์ ์ด ๋ช
ํ)
git worktree add ../mk-login-page feat/login
git worktree add ../mk-bug-fix-123 fix/issue-123
git worktree add ../mk-redesign feat/redesign
# ๋์ ์ด๋ฆ (๋ญ์ง ๋ชจ๋ฆ)
git worktree add ../test1 branch1
git worktree add ../temp branch24. npm ํ๋ก์ ํธ๋ install์ ์์ง ๋ง์ธ์
Node.js ํ๋ก์ ํธ์ ์ํฌํธ๋ฆฌ๋ฅผ ๋ง๋ค๋ฉด, node_modules ํด๋๊ฐ ์์ด์. ์ํฌํธ๋ฆฌ ํด๋์์ npm install์ ๋จผ์ ์คํํด์ผ ์ ์์ ์ผ๋ก ์๋ํด์.
git worktree add ../my-experiment feat/experiment
cd ../my-experiment
npm install # ์ด๊ฑธ ๋จผ์ !
npm run dev5. PR(Pull Request)๊ณผ ํจ๊ป ์ฌ์ฉํ๊ธฐ
Worktree์์ ์์ ํ ๋ด์ฉ์ GitHub PR๋ก ์ฌ๋ฆฌ๋ฉด ํ์์ ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ์ ํ์ ํฉ์น ์ ์์ด์. ์ด๊ฒ ์ค๋ฌด์์ ๊ฐ์ฅ ๋ง์ด ์ฐ๋ ํจํด์ด์์.
์ํฌํธ๋ฆฌ์์ ๋ง๋ ๊ธฐ๋ฅ์ PR๋ก ์ฌ๋ ค์ค.
๋ฆฌ๋ทฐ ๋ฐ๊ณ mergeํ๊ณ ์ถ์ด.6. ๊ฐ์ ๋ธ๋์น๋ 2๊ณณ์์ ์ด ์ ์์ด์
ํ๋์ ๋ธ๋์น๋ ๋์์ ํ๋์ ์ํฌํธ๋ฆฌ์์๋ง ์ด ์ ์์ด์. ์ด๋ฏธ main์ ๋ฉ์ธ ํด๋์์ ์ฐ๊ณ ์๋ค๋ฉด, ์ํฌํธ๋ฆฌ์์๋ ๋ค๋ฅธ ์ด๋ฆ์ ๋ธ๋์น๋ฅผ ๋ง๋ค์ด์ผ ํด์. ์ด๊ฑด git์ด ์๋์ผ๋ก ์ฒ๋ฆฌํด์ฃผ๋ ๊ฑฑ์ ํ์ง ์์๋ ๋ผ์.
| ์ํฉ | ํด๊ฒฐ๋ฒ |
|---|---|
| ์ํฌํธ๋ฆฌ ์์ฑ ์ ์๋ฌ | git worktree prune ์คํ ํ ์ฌ์๋ |
| node_modules๊ฐ ์์ด์ | ์ํฌํธ๋ฆฌ ํด๋์์ npm install ์คํ |
| merge ์ ์ถฉ๋ ๋ฐ์ | Claude Code์๊ฒ "์ถฉ๋ ํด๊ฒฐํด์ค" ์ง์ |
| ์ํฌํธ๋ฆฌ๊ฐ ๋๋ฌด ๋ง์์ | git worktree list๋ก ํ์ธ ํ ์ ์ฐ๋ ๊ฒ ์ญ์ |
| git ์ ์ฅ์๊ฐ ์๋๋ผ๊ณ ์๋ฌ | git init์ผ๋ก ์ด๊ธฐํ ํ์ |
Worktree = ์คํจํด๋ ๊ด์ฐฎ์ ์คํ ๊ณต๊ฐ
์๋ณธ์ ํญ์ ์์ ํ๋๊น โ์ผ๋จ ํด๋ณด์โ๊ฐ ๊ฐ๋ฅํด์ ธ์. ์คํ์ด ์ผ์์ด ๋๋ฉด ์ฑ์ฅ ์๋๊ฐ ๋ฌ๋ผ์ ธ์.
์คํ์ ๋๋ ค์ํ์ง ๋ง์ธ์
์ฝ๋ฉ์์ ๊ฐ์ฅ ์ค์ํ ๊ฑด โ์ผ๋จ ํด๋ณด๋ ๊ฒโ์ด์์. Worktree๊ฐ ์์ผ๋ฉด ์๋ณธ์ด ๋ง๊ฐ์ง ๊ฑฑ์ ์ด ์์ผ๋๊น, ๋ ๊ณผ๊ฐํ๊ฒ ์๋ํ ์ ์์ด์. Claude Code์๊ฒ โ์ํฌํธ๋ฆฌ ๋ง๋ค์ด์ ์ด๊ฒ์ ๊ฒ ์คํํด์คโ๋ผ๊ณ ํ๋ง๋๋ง ํ๋ฉด ์์ํ ์ ์์ด์!
์ฐธ๊ณ ์๋ฃ
- Git Worktree ๊ณต์ ๋ฌธ์ โ git-scm.com/docs/git-worktree
- Claude Code Agent Teams โ docs.anthropic.com/en/docs/claude-code
- Git ๋ธ๋์น ์ ๋ต โ git-scm.com/book/en/v2/Git-Branching