본문 바로가기
DevTools/Git

[Git] Worktree Command

by llHoYall 2026. 3. 7.

평소에 개발을 하다 보면 갑자기 급한 버그 수정 요청이 들어오거나, 다른 브랜치의 코드를 참고하면서 작업해야 할 때가 있잖아요?

그럴 때마다 지금 하던 작업을 git stash로 잠시 치워두거나, 아직 다 완성되지도 않은 코드를 임시로 commit 하고 브랜치를 옮기는 게 참 번거롭더라고요.

그래서 계속 다른 방법들을 찾아봤었는데, 새로 프로젝트를 통째로 clone 받아서 다른 폴더에서 여는 것 외에는 마땅한 대안을 찾기가 어렵더라고요.

그런데 프로젝트 용량이 크면 매번 새로 받는 것도 일이고, 설정도 다시 해야 하니 귀찮았어요.

하나의 로컬 저장소에서 여러 브랜치를 동시에 펼쳐놓고 작업하면 참 좋을 텐데, 안 그래도 개발 시간에 쫓기는데 이런 사소한 컨텍스트 스위칭에 에너지를 쓰는 건 비효율적이더라고요.

그러다 보니 결국 git worktree 쪽으로 오게 되더라고요.

사실 주변에서 쓰는 사람도 없고, 쓰던 것만 쓰다보니 이런 게 있는지도 잘 몰랐다가 최근에 알게되서 익혀보면서 공유도 할겸 정말 오랫만에 포스팅을 해보네요.

stash를 남발해야 하는 기존 방식과 달리, 아예 별도의 디렉토리에 브랜치를 체크아웃해서 동시에 코드를 수정할 수 있다는 것이 장점이라 할 수 있습니다.

stash도 잘 쓰긴 했는데, 두 브랜치를 비교하거나 할 때는 어쩔 수 없이 clone을 하나 더 받았었는데, 이젠 그럴 필요가 없겠네요. ㅎㅎ

Add Worktree

worktree를 새로 추가하면 기존 .git 데이터는 공유하면서, 실제 파일들만 다른 폴더에 꺼내놓는 구조예요.

각 폴더(worktree)별로 독립적인 빌드 환경을 가질 수 있어서 정말 편하더라고요.

사용법 자체는 간단합니다.

$ git worktree add <PATH>
 
위 명령은 현재 폴더가 아닌 상위 폴더나 다른 경로에 현재 작업중인 브랜치를 새 폴더로 옮기면서 폴더 명으로 브랜치까지 새롭게 만들어줍니다.
$ git worktree add <PATH> <BRANCH>

 

이 명령은 이미 존재하는 브랜치를 새로운 경로(worktree)에 추가합니다.

$ git worktree add -b <BRANCH> <PATH>

 

이 명령은 지정한 경로로 새로운 브랜치를 만들면서 추가합니다.

첫 번째 방법과의 차이는 브랜치명과 경로명을 서로 다르게 원하는 대로 줄 수 있다는 것이죠.

$ git worktree add --detach <PATH> <Commit ID>

 

이 명령은 특정 commit을 떼서 worktree에 추가를 해줍니다.

Check Worktree List

$ git worktree list
 
작업했던 worktree 목록을 볼 수 있어요.

Remove Worktree

$ git worktree remove ../<FOLDER>
 

작업이 끝나면 폴더만 지우는 게 아니라 명령어로 깔끔하게 정리해 주면 됩니다.

Conclusion

확실히 익혀두면 유용한 상황들이 꽤 있을 것 같아요.

또, VSCode를 사용한다면 GitLens extension을 통해 보다 손쉽게 관리를 할 수 있어요.

처음엔 폴더를 여러 개 관리하는 게 조금 어색한 감이 있긴 한데, 뭐 익숙해지면 이또한 업무 효율의 치트키가 되겠죠. ㅎㅎ

반응형

댓글