Git 워크트리 기초 사용법 정리
✈️ Git 워크트리 기초 사용법 정리
🎯 개요
Git 워크트리는 하나의 저장소로 여러 작업 디렉토리를 동시에 사용하는 기능 브랜치를 자꾸 바꾸거나 스태시하는 대신, 브랜치마다 별도 폴더를 두고 병렬 작업 가능
📋 목록
- Git 워크트리란?
- 언제 쓰면 좋은지
- 기본 명령어 정리
- 예시로 따라하는 Git 워크트리
- 주의사항
✏️ 용어 설명
- Git 워크트리(Worktree): 하나의 Git 저장소에서 여러 개의 워킹 디렉토리를 동시에 만드는 기능
- 워킹 디렉토리(Working Directory): 실제로 파일을 수정하고 작업하는 폴더 공간
- 스태시(Stash): 작업 중인 변경사항을 임시 저장하는 Git 기능
- 체크아웃(Checkout): 특정 브랜치로 전환하여 해당 브랜치의 파일 상태로 변경하는 작업
✏️ Git 워크트리란?
워크트리 정의
하나의 Git 저장소에서 여러 개의 워킹 디렉토리를 동시에 만드는 기능 각 워킹 디렉토리는 서로 다른 브랜치를 체크아웃해서 독립적으로 작업 가능
특징 정리
- 하나의 저장소에 여러 개의 작업 디렉토리 존재 가능
- 각 디렉토리는 서로 다른 브랜치를 가리키고 있음
- 디스크 공간은 공유하는 부분이 많아서 생각보다 많이 쓰지 않음
💡왜 필요하나?
브랜치 바꾸려고 스태시하거나, git checkout을 계속 반복하는 번거로움을 줄여줌 동시에 여러 기능을 개발하거나, 버그 수정과 기능 개발을 병행할 때 특히 유용함
✏️ 언제 쓰면 좋은지
유용한 상황
- 기능 A 작업 중인데, 갑자기 기능 B 버그를 급하게 고쳐야 할 때
- 메인 브랜치는 깨지지 않게 두고, 실험용 브랜치를 따로 두고 싶을 때
- 코드 리뷰나 테스트를 위해 특정 브랜치 상태를 따로 띄워두고 비교하고 싶을 때
장점 요약
- git stash와 브랜치 이동을 줄일 수 있음
- 작업 맥락을 폴더 단위로 분리할 수 있음
- 하나의 저장소로 여러 브랜치를 동시에 실행하거나 빌드하기 쉬움
✏️ 기본 명령어 정리
워크트리 목록 확인
git worktree list
현재 저장소에 연결된 모든 워크트리 목록을 보여줌 각 항목에는 경로와 어떤 브랜치를 체크아웃하고 있는지가 표시됨
워크트리 추가
git worktree add <새-폴더-경로> <브랜치-이름>
특정 브랜치를 가리키는 새 워킹 디렉토리를 만듦 브랜치가 없으면 -b 옵션으로 새 브랜치를 만들면서 워크트리도 같이 만들 수 있음
git worktree add -b feature/login ../myapp-login
현재 브랜치를 기준으로 feature/login 브랜치를 만들고, ../myapp-login 폴더에 체크아웃함
워크트리 제거
git worktree remove <워크트리-경로>
더 이상 필요 없는 워크트리를 제거할 때 사용함 작업이 끝났고 브랜치도 정리했을 때 사용하면 깔끔함
✏️ 예시로 따라하는 Git 워크트리
예시 상황
- 현재 프로젝트 경로가 ~/projects/myapp 라고 가정
- 기본 브랜치는 main 이라고 가정
1단계: 저장소 상태 확인
cd ~/projects/myapp
git status
git branch
작업 중인 변경사항이 있는지, 현재 브랜치가 무엇인지 확인함
2단계: 새로운 워크트리 추가
기능 브랜치를 워크트리로 분리해서 작업해보기
# 로그인 기능용 워크트리 생성
git worktree add -b feature/auth ../myapp-auth
결과
- ~/projects/myapp → main 브랜치
- ~/projects/myapp-auth → feature/auth 브랜치
이제 ~/projects/myapp-auth 는 완전히 별도 폴더처럼 취급 가능함
cd ../myapp-auth
git status
git branch
feature/auth 브랜치로 체크아웃된 것을 확인할 수 있음
3단계: 워크트리 간 이동
메인 코드 보려면
cd ~/projects/myapp
로그인 기능 작업 하려면
cd ~/projects/myapp-auth
브랜치 변경 없이 단순히 디렉토리 이동만으로 맥락을 바꿀 수 있음
4단계: 작업 완료 후 머지
워크트리 안에서 평소처럼 개발하고 커밋함
cd ~/projects/myapp-auth
# 코드 수정 후
git add .
git commit -m "feat: add auth feature"
이제 메인 디렉토리로 돌아가서 브랜치를 머지함
cd ~/projects/myapp
git checkout main
git merge feature/auth
머지가 끝나면 메인 브랜치에 기능이 반영됨
5단계: 워크트리 정리
더 이상 feature/auth 워크트리가 필요 없다면 제거함
git worktree list
git worktree remove ../myapp-auth
브랜치까지 삭제할지 여부는 상황에 따라 선택하면 됨
✏️ 주의사항
- 같은 파일을 여러 워크트리에서 동시에 크게 수정하면 머지 충돌이 생길 수 있음
- 워크트리를 지우기 전에 해당 디렉토리의 변경사항이 커밋되었는지 꼭 확인해야 함
- 실제 로컬 경로를 너무 복잡하게 만들지 말고, 규칙을 정해서 폴더 이름을 관리하는 것이 좋음
🔄 개념 비교
| 항목 | 설명 |
|---|---|
| git checkout | 브랜치 전환 시 스태시 필요, 작업 맥락 전환 번거로움 |
| git worktree | 브랜치마다 별도 폴더, 맥락 전환 편리, 병렬 작업 가능 |
| 디스크 사용량 | 공유 파일 구조로 생각보다 적게 사용 |
| 활용 시나리오 | 긴급 버그 수정, 기능 개발 병행, 코드 리뷰용 브랜치 비교 |
💡 요약
Git 워크트리는 하나의 저장소에서 여러 워킹 디렉토리를 병렬로 쓰게 해주는 기능 브랜치마다 별도 폴더를 두고 작업하므로 맥락 전환이 편함 추가, 목록, 제거 세 가지 명령만 익혀도 기본 사용은 충분함
Git 워크트리에 익숙해지면 브랜치 이동과 스태시 스트레스가 크게 줄어드는 경험을 할 수 있음 처음에는 작은 실험용 브랜치부터 워크트리로 나누어보면 감을 잡기 좋음
댓글남기기