What are git worktrees, and why should I use them?

개요

Git worktree는 2015년부터 존재했지만 최근에야 인기를 얻고 있으며, 개발자가 컨텍스트 전환 부담을 줄이고 여러 작업을 병렬로 처리할 수 있게 돕는 기능입니다.

주요 내용

* 기존 방식의 컨텍스트 전환 문제점: 브랜치를 전환하거나 git stash를 사용하는 방식은 작업 내용을 저장하고 불러오는 과정, 의존성 재설치 등에 상당한 정신적 부담과 시간 소요를 유발합니다.
* Worktree를 활용한 컨텍스트 전환: git worktree add 명령어를 사용하여 새로운 작업 공간을 생성하고, 기존 작업 내용을 그대로 유지한 채 다른 브랜치에서 작업할 수 있어 컨텍스트 전환이 훨씬 간편해집니다.
* Worktree의 인기 상승 이유: AI 발전으로 개발 작업이 병렬화되면서 여러 세션을 동시에 운영하는 빈도가 늘었고, GitHub Copilot과 같은 최신 도구들이 Worktree를 기본 모드로 채택하면서 중요성이 부각되었습니다.
* Worktree 사용 시 고려사항:
* 의존성 중복: 각 worktree는 프로젝트 종속성의 자체 복사본을 요구하므로 디스크 공간을 많이 차지할 수 있습니다.
* 폴더 관리: 정리되지 않으면 부모 디렉토리에 불필요한 폴더가 쌓일 수 있어 직접 삭제하거나 관리해야 합니다.
* Global .gitignore: worktree 폴더를 메인 저장소 디렉토리 안에 생성할 경우 .gitignore에 추가하여 추적되지 않도록 해야 합니다.
* 동일 브랜치 제약: 데이터 손상을 방지하기 위해 Git은 두 개의 다른 worktree에서 동일한 브랜치를 체크아웃하는 것을 허용하지 않습니다.
* GitHub Copilot 앱에서의 Worktree 활용: GitHub Copilot 앱은 새로운 세션 생성 시 기본적으로 worktree를 사용하며, 생성된 worktree의 위치 및 상태 정보를 쉽게 확인할 수 있습니다.

시사점

Git worktree는 개발자가 컨텍스트 전환의 복잡성을 줄이고 병렬 개발 생산성을 높이는 데 효과적인 도구이며, AI 기반 개발 환경의 확산과 함께 그 활용도가 더욱 증대될 것으로 예상됩니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions