What we have to do is to be forever curiously
testing new opinions and courting new impressions

우리가 해야 할 일은 끊임없이 호기심을 갖고
새로운 생각을 시험해보고 새로운 인상을 받는 것

✈️ 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 워크트리에 익숙해지면 브랜치 이동과 스태시 스트레스가 크게 줄어드는 경험을 할 수 있음 처음에는 작은 실험용 브랜치부터 워크트리로 나누어보면 감을 잡기 좋음

댓글남기기