전공영역 공부 기록

git worktree개념과 사용방법

악분 2026. 2. 15. 13:09
반응형

git worktree 개념과 사용방법

git worktree를 쉽게 설명하면, git 폴더를 통째로 복사하여 작업 공간을 분리하는 개념입니다.  보통 git 작업공간을 나눌 때 branch로 분리하는데, worktree를 사용하면 작업공간을 폴더로 분리하고 각 폴더 안에서 branch도 분리할 수 있습니다.

 

git worktree 수도코도는 cp와 유사하게 동작한다고 생각하면 됩니다.

# 비유: 폴더를 복사하고 새 브랜치를 만드는 것과 비슷
cp -r {git 폴더} {새 폴더 위치}   # 단, git worktree명령어는 .git폴더를 다르게 복사함
git branch {새로운 branch}

 

cp와의 차이점은 git worktree는 소스 파일만 복사하고 .git은 복사하지 않는다는 점입니다(이유는 아래에서 설명). 위 과정을 한 줄로 할 수 있는 명령어가 worktree입니다.

git worktree add -b {new branch} {new path} {fork branch}

 

아래 예제는 현재 main branch 내용을 “../test”폴더에 복사한 후, feature/test 브랜치를 생성합니다.

 

git worktree 실행 결과는 아래와 같습니다.

 

worktree의 목록은 worktree list로 조회할 수 있습니다.

git worktree list

 

 

git worktree 특징

worktree의 특징은 원본 “.git”폴더를 같이 사용한다는 점입니다. worktree의 “.git”은 폴더가 아니라 파일로 되어 있고, 파일 내용에는 원본 “.git”의 경로가 적혀 있습니다.

 

git worktree를 자주 사용하는 곳

모든 worktree가 동일한 “.git”폴더를 사용한다면 왜 굳이 폴더별로 작업공간을 구분했을까요? git 작업상태를 물리적으로 격리하기 위해서라고 생각합니다. 여기서 작업상태란 untracked file, staged area 등을 의미하고 아래 그림처럼 git status에서 확인할 수 있습니다.

 

폴더로 작업 상태를 물리적으로 격리하는 방법은 branch 관리 방법보다 매우 편합니다. branch로만 관리하면 git stash로 임시 저장하거나 충돌을 수동으로 해결해야 합니다. worktree를 사용하면 작업공간 자체가 분리되어 있으므로 브랜치 전환 없이 여러 작업을 동시에 할 수 있습니다.

 

Git worktree의 작업 상태 격리 장점 때문에, AI agent가 Git worktree를 사용해서 코드 작성 자동화를 많이 하고 있습니다. Agent가 worktree에서 작업하면 사용자의 메인 작업공간에 영향을 주지 않습니다.

 

git worktree 자주 사용하는 명령어

worktree 생성

git worktree add -b <new branch> <new path> <fork branch>

 

worktree 조회

git worktree list

 

worktree 삭제

# 특정 worktree 삭제
git worktree remove <path>
# 이미 수동으로 폴더를 삭제한 경우, 남은 참조 정리
git worktree prune

 

반응형