| sitelink1 | |
|---|---|
| sitelink2 | |
| sitelink3 |
branch는 작업의 '이력(버전)'을 나타내고, worktree는 그 작업을 진행하는 '실제 폴더(공간)'를 나타냅니다.기존에는 여러 브랜치를 동시에 작업하려면
git checkout으로 브랜치를 교체하거나, 프로젝트 전체를 별도 폴더에 clone해야 했습니다. worktree를 사용하면 하나의 Git 저장소 안에서 여러 브랜치를 각기 다른 폴더에 동시 펼쳐놓고 작업할 수 있습니다.핵심 차이점 비교
| 구분 | Git Branch (브랜치) | Git Worktree (워크트리) |
| 개념 | 특정 커밋을 가리키는 포인터 (참조) | 브랜치 파일들이 실제 배치되는 디렉토리 (작업 공간) |
| 존재 위치 | .git 내부의 메타데이터 |
실제 파일 시스템 상의 물리적 폴더 |
| 동시 작업 | 한 번에 하나의 브랜치만 체크아웃 가능 | 여러 브랜치를 각기 다른 폴더에 동시 체크아웃 가능 |
| 저장소 공유 | 해당 브랜치 고유의 커밋 이력 보유 | .git 저장소(커밋 이력, 설정 등)를 모두 공유 |
| 비유 | 책의 특정 페이지를 표시하는 책갈피 | 책을 펼쳐서 읽고 작성하는 책상 위의 공간 |
언제 Worktree를 사용하면 좋을까?
-
기능 개발 중 급한 버그 수정(Hotfix)이 들어왔을 때:진행 중인 작업을
git stash로 임시 저장하고 브랜치를 바꿀 필요 없이, 별도 워크트리 폴더를 열어 바로 버그를 수정하고 커밋할 수 있습니다. -
두 브랜치의 코드를 동시에 실행하거나 비교할 때:브랜치를 오가며 빌드/테스트할 필요 없이, 두 폴더에 각각 다른 브랜치를 띄워놓고 서로 비교할 수 있습니다.
-
무거운 빌드 과정을 거치는 프로젝트:브랜치를 바꿀 때마다 빌드 아티팩트나
node_modules등의 파일이 재구성되는 시간을 절약할 수 있습니다.
주요 Worktree 명령어
Bash
# 1. 새로운 워크트리 생성 (새 폴더에 특정 브랜치 연결)
# git worktree add <폴더경로> <브랜치명>
git worktree add ../my-hotfix feature/hotfix-login
# 2. 새로운 브랜치를 생성하면서 워크트리 생성
git worktree add -b feature/new-idea ../new-idea-dir
# 3. 현재 연결된 워크트리 목록 확인
git worktree list
# 4. 작업이 끝난 워크트리 삭제
git worktree remove ../my-hotfix
합니다. (충돌 방지를 위해 하나의 브랜치는 하나의 워크트리에서만 열 수 있습니다.)동일한 브랜치를 여러 워크트리에 동시에 체크아웃하는 것은 불가능 Git 규칙상 주의사항: