Git Worktree 학습
개발을 하다 보면 하나의 작업만 깔끔히 끝낼 수 있는 날이 거의 없습니다. 어떤 날은 기능 개발을 하다가 갑자기 버그 티켓이 튀어나오고, 또 어떤 날은 리뷰 요청이 들어와 브랜치를 옮겨가며 코드를 확인해야 합니다. 이런 상황에서 가장 귀찮은 일이 바로 브랜치를 바꾸기 위해 내 작업을 스태시하거나 중간 커밋을 남발하는 것입니다.
그래서 저는 Git Worktree를 잘 활용하고 있습니다. Worktree는 실무에서 체감 효율을 크게 올려주는 도구이며, 생산성이 눈에 띄게 좋아집니다.
Git Worktree란 무엇인가
Git Worktree는 하나의 Git 저장소 안에서 여러 개의 독립된 작업 디렉토리를 만들 수 있는 기능입니다. 즉, 하나의 저장소에서 여러 브랜치를 동시에 체크아웃하여 작업할 수 있는 환경을 제공합니다. 기존에는 브랜치를 바꾸기 위해 반드시 하나의 디렉토리 내에서 switch를 해야 했지만, Worktree를 사용하면 브랜치마다 별도의 디렉토리를 생성할 수 있어 작업 간 충돌을 완전히 방지할 수 있습니다.
실무에서는 다음과 같은 경우 Worktree가 유용합니다.
- 긴 빌드나 테스트가 돌아가는 동안 다른 기능을 개발해야 할 때
- 작업 도중에도 다른 브랜치의 코드 리뷰를 해야 할 때
- 급한 핫픽스 브랜치를 따야 할 때
- 여러 기능을 병렬로 진행해야 할 때
한마디로, 브랜치 이동 때문에 작업 흐름이 끊기는 문제를 Worktree가 깔끔하게 해결합니다.
Worktree를 사용할 때의 베스트 프랙티스
1) 메인 디렉토리는 항상 깨끗하게 유지합니다
저는 다음과 같은 구조를 권장합니다.
/project # 메인 repo (거의 소스 작업하지 않음)
/worktrees
/feature-login
/feature-payment
/bugfix-123
메인 프로젝트 폴더는 저장소 역할만 하고, 핫 픽스를 제외한 실제 개발은 전부 worktrees 폴더에서만 진행합니다.
2) 폴더 네이밍 규칙은 팀 내에서 통일합니다
브랜치명 그대로 폴더명으로 사용하는 방식을 추천합니다.
worktrees/feature/login
worktrees/fix/header-crash
3) 스크립트로 생성 및 삭제를 자동화합니다
사람이 직접 삭제하면 실수로 메타데이터가 꼬일 수 있으므로 반드시 Git 명령어로 제거해야 합니다.
git worktree remove worktrees/feature-login
4) 긴 테스트나 빌드가 걸리는 환경에서 특히 효과적입니다
테스트가 20분 이상 걸리는 서버 개발 프로젝트라면 Worktree는 사실상 필수입니다.
마무리
Git Worktree는 단순히 브랜치를 여러 개 켜놓는 기능이 아니라, 작업 흐름을 끊지 않고 여러 업무를 동시에 처리할 수 있게 해주는 강력한 개발 생산성 도구입니다. 특히 팀 단위에서 공통 폴더 구조와 네이밍 규칙을 정해 사용하면 개발 과정이 더욱 명확해지고, 실수로 인해 브랜치를 잃어버리는 문제도 줄어듭니다.
'Git' 카테고리의 다른 글
| Github[info: Github SSH 연결 방법] (0) | 2025.03.15 |
|---|---|
| Git [명령어: Git 명령어 정리] (0) | 2024.11.21 |
| git [ 설정 : .gitignore 기본 내용 및 설정 ] (0) | 2022.10.17 |
| Github [정보 : Github 뱃지작성방법] (0) | 2022.05.09 |
| Git [활용 : 과거버전으로 돌아가기(revert, reset)] (0) | 2021.11.29 |