Claude Code Custom Slash 명령어: Git Worktree Workflow
Git worktree 기반 병렬 개발 워크플로우를 자동화하는 Claude Code 커스텀 슬래시 명령어 세트이다.
개요
| 명령어 | 설명 |
|---|---|
/start-git-worktree |
Jira 티켓번호로 worktree 생성 |
/finish-git-worktree |
worktree를 현재 브랜치에 merge 후 제거 |
워크플로우
/start-git-worktree PROJ-123 add-login
│
▼
worktree에서 작업 & 커밋
│
▼
원본 프로젝트로 복귀
│
▼
/finish-git-worktree
→ worktree 선택
→ merge + worktree 제거
설치
- 대상 경로:
~/.claude/commands/ - 복사할 파일:
start-git-worktree.md,finish-git-worktree.md
~/.claude/commands/
├── start-git-worktree.md
└── finish-git-worktree.md
/start-git-worktree
Jira 티켓번호 기반으로 새 worktree와 feature 브랜치를 생성한다.
사용법
/start-git-worktree <Jira-ticket-number> [title]
예시
/start-git-worktree PROJ-123
/start-git-worktree PROJ-123 add-login-page
생성 규칙
- 브랜치명:
feature/<Jira티켓>-feat/<yyyyMMdd>-<index>[-<title>]- 동일 날짜 여러 번 생성 시 index 자동 증가 (
01,02, …)
- 동일 날짜 여러 번 생성 시 index 자동 증가 (
- Worktree 경로:
../<project-name>-<Jira티켓>-<yyyyMMdd>-<index>[-<title>]
feature/PROJ-123-feat/20260224-01
feature/PROJ-123-feat/20260224-01-add-login-page
../my-app-PROJ-123-20260224-01
../my-app-PROJ-123-20260224-01-add-login-page
동작 순서
- 인자에서 Jira 티켓번호·title 분리
- 프로젝트 디렉토리명 추출
- 날짜 + 자동 index로 브랜치명 생성
git worktree add -b <branch> <path>실행- 결과 요약 출력 (base branch, 브랜치명, worktree 경로)
허용 도구
Bash(git:*),Bash(date:*),Bash(basename:*),Bash(ls:*)
/finish-git-worktree
선택한 worktree의 브랜치를 현재 브랜치에 merge한 뒤 worktree를 제거한다.
사용법
/finish-git-worktree
- 인자 없음
- 원본 프로젝트(main repo)에서 실행
동작 순서
- 환경 검증 — worktree 목록 조회, 제거 대상 없으면 중단
- 사용자 선택 — main repo 제외 worktree 목록 표시 후 선택
- Uncommitted changes 확인 — 변경사항 있으면 경고 후 중단
- Merge — 선택 worktree 브랜치를 현재 브랜치에 merge (충돌 시 abort 후 중단)
- Worktree 제거 —
git worktree remove실행 - 결과 요약 — merge target, merge된 브랜치, 제거 경로, 남은 worktree 출력
동작 정책
| 항목 | 정책 |
|---|---|
| Uncommitted changes | 경고 후 중단 |
| Remote push | 미실행 |
| Merge 방향 | worktree 브랜치 → 현재 브랜치 |
| Merge 충돌 | abort 후 중단 |
| 로컬 브랜치 | 유지 (삭제 안 함) |
허용 도구
Bash(git:*)
전체 사용 예시
# 1. worktree 생성
$ claude
> /start-git-worktree PROJ-456 user-auth
# 출력: Base branch, 브랜치명, 경로
# 2. worktree로 이동 후 작업·커밋
$ cd ../my-app-PROJ-456-20260224-01-user-auth
$ claude
# ... 작업 및 커밋 ...
# 3. 원본으로 복귀 후 worktree 정리
$ cd ../my-app
$ claude
> /finish-git-worktree
# 출력: Worktree 목록 → 선택 → merge → 제거 → 결과 요약
명령어 파일 소스
start-git-worktree.md
---
description: Jira 티켓번호로 git worktree 생성
argument-hint: <Jira-ticket-number> [title]
allowed-tools: Bash(git:*), Bash(date:*), Bash(basename:*), Bash(ls:*)
---
# Git Worktree 생성
아래 정보를 참고하여 git worktree를 생성하라.
## 현재 환경
- 프로젝트 루트: `!git rev-parse --show-toplevel`
- 현재 브랜치 (base branch): `!git branch --show-current`
- 오늘 날짜: `!date +%Y%m%d`
## 실행 절차
### 1. 인자 파싱
`$ARGUMENTS`에서 첫 번째 단어를 **Jira 티켓번호**, 나머지를 **title**로 분리한다.
- 인자 비어있으면 에러 출력 후 중단: "사용법: /start-git-worktree <Jira-ticket-number> [title]"
- 예: `PROJ-123` → 티켓: `PROJ-123`, title: 없음
- 예: `PROJ-123 add-login-page` → 티켓: `PROJ-123`, title: `add-login-page`
### 2. 프로젝트 디렉토리명 추출
`basename $(git rev-parse --show-toplevel)` 로 프로젝트 디렉토리명 추출
### 3. 브랜치명 생성
형식: `feature/<Jira티켓>-feat/<yyyyMMdd>-<index>[-<title>]`
- `<yyyyMMdd>`: 오늘 날짜 (`date +%Y%m%d`)
- index: `git branch -a --list "feature/<Jira티켓>-feat/<yyyyMMdd>-*"` 조회 후 없으면 `01`, 있으면 max+1 (2자리 zero-pad)
- title 있으면 index 뒤에 `-<title>` 추가
### 4. Worktree 경로 결정
형식: `../<project-name>-<Jira티켓>-<yyyyMMdd>-<index>[-<title>]`
### 5. Worktree 생성 실행
```
git worktree add -b <branch-name> <worktree-path>
```
### 6. 결과 요약 출력
- Base branch, 브랜치명, Worktree 경로, `cd 명령어` 안내
## 중요 사항
- 각 단계를 Bash 도구로 실행
- 에러 시 즉시 사용자에게 알림
- 브랜치명·경로 오타 주의
finish-git-worktree.md
---
description: git worktree 목록에서 선택하여 merge 후 제거
allowed-tools: Bash(git:*)
---
# Git Worktree 정리 (Merge 후 제거)
사용자가 선택한 worktree를 현재 브랜치에 merge한 뒤 제거한다.
## 현재 환경
- Worktree 목록: `!git worktree list`
- 현재 브랜치: `!git branch --show-current`
## 실행 절차
### 1. 환경 검증
- main repo(첫 번째 항목) 제외 worktree 확인
- 제거 대상 없으면 "제거할 worktree가 없습니다." 출력 후 중단
### 2. Worktree 목록 표시 및 사용자 선택
- main repo 제외 worktree 목록 정리
- AskUserQuestion 도구로 제거할 worktree 선택 요청 (label: 브랜치명, description: 경로)
### 3. Uncommitted changes 확인
- `git -C <선택된-worktree-경로> status --porcelain` 실행
- 출력 있으면 "커밋되지 않은 변경사항이 있습니다. 먼저 커밋하거나 stash한 후 다시 실행하세요." 출력 후 중단
### 4. Merge
- `git merge <worktree-branch>` 실행
- 충돌 시 `git merge --abort` 후 "merge 충돌이 발생했습니다. 수동으로 merge를 진행하세요." 출력 후 중단
### 5. Worktree 제거
- `git worktree remove <선택된-worktree-경로>` 실행
- 에러 시 사용자에게 알리고 중단
### 6. 결과 요약 출력
- merge target, merge된 브랜치, 제거된 경로
- "로컬 브랜치는 유지됩니다. 필요 시 `git branch -d <브랜치명>`으로 삭제하세요."
- `git worktree list` 실행하여 남은 worktree 표시
## 중요 사항
- 각 단계를 Bash 도구로 실행
- remote push 미실행
- worktree 제거 후 로컬 브랜치 삭제 안 함
- 에러 시 즉시 사용자에게 알림