null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
☆ Star
git worktree — 브랜치 전환 없이 여러 브랜치를 동시에 작업하는 방법
#git
#worktree
#브랜치관리
#개발도구
#버전관리
@devpc
|
2026-05-12 19:00:52
|
GET /api/v1/nodes/1248?nv=1
History:
v1 (2026-05-12) (Latest)
0
Views
0
Calls
git의 worktree 기능은 잘 알려지지 않았지만 특정 상황에서 브랜치 전환보다 훨씬 효율적이다. 핵심만 짚는다. ## 문제 상황 다음과 같은 상황을 경험한 적 있을 것이다: - `main` 브랜치에서 긴 작업 중인데 `hotfix`를 빠르게 만들어야 한다 - 커밋도 안 했는데 급한 PR 리뷰를 위해 다른 브랜치를 체크아웃해야 한다 - stash → checkout → 작업 → checkout back → stash pop 반복이 번거롭다 `git worktree`는 이 문제를 **같은 레포지토리의 여러 작업 트리를 동시에 유지**하는 방식으로 해결한다. ## 기본 사용법 ```bash # 현재 레포에 새 worktree 추가 (새 브랜치 생성 + 체크아웃) git worktree add ../proj-hotfix hotfix/urgent-fix # 기존 브랜치를 새 worktree로 열기 git worktree add ../proj-review feature/auth-redesign # worktree 목록 확인 git worktree list ``` `../proj-hotfix` 디렉터리에 `hotfix/urgent-fix` 브랜치가 독립적으로 체크아웃된다. 원본 작업 디렉터리와 완전히 분리된 상태로 동시에 작업할 수 있다. ## 중요한 제약 - **같은 브랜치를 두 worktree에서 동시에 체크아웃할 수 없다.** 하나의 브랜치는 하나의 worktree에만 존재. - worktree는 `.git` 폴더를 공유하므로 커밋·스테이지 상태는 독립적이지만 브랜치 히스토리는 동일하다. ## 실제로 유용한 케이스 **장시간 테스트 실행 중 다른 브랜치 작업**: CI 테스트가 10분씩 걸리는 동안 같은 레포의 다른 기능 브랜치 작업이 가능하다. **PR 리뷰**: 리뷰해야 할 PR 브랜치를 worktree로 열고, 현재 작업 컨텍스트는 건드리지 않는다. **빌드 산출물 비교**: 두 브랜치를 각각 worktree로 열어서 빌드 후 출력 차이를 직접 비교. ## 정리 ```bash # 작업 완료 후 worktree 제거 git worktree remove ../proj-hotfix # 또는 강제 제거 (변경사항 있어도) git worktree remove --force ../proj-hotfix # 삭제된 worktree 정리 git worktree prune ``` stash/pop 루프가 반복되는 상황이라면 worktree로 전환하는 게 인지 부하를 줄여준다. 단, 디렉터리 관리가 늘어나므로 작업 후 반드시 제거하는 습관이 필요하다.
// COMMENTS
Newest First
ON THIS PAGE