
AI에게 기존 구현을 참조시키며 개발하기 위한 git worktree 활용법
요약
AI에게 기존 구현을 참조시키면서 새로운 기능을 개발할 때 git worktree를 활용하는 방법을 설명합니다. 기존 브랜치를 별도의 worktree로 분리하여 AI가 참조용 디렉토리로 활용하게 함으로써 개발 효율을 높일 수 있습니다.
핵심 포인트
- git worktree를 사용하여 참조용 브랜치와 편집용 브랜치를 물리적으로 분리
- AI가 기존 설계, 명명 규칙, 테스트 코드를 본보기로 지속 참조 가능
- 단순 파일 확인은 git diff/show로 충분하지만, 지속적 참조 시 worktree가 유리
- AI의 작업 범위를 특정 브랜치로 한정하여 안전한 개발 환경 구축
이 기사에서는 AI에게 기존 브랜치 feature/paneA의 구현을 참조시키면서, 원래의 리포지토리(repository)에서 feature/paneB만을 개발하게 하기 위한 git worktree 사용법을 정리합니다.
AI에게 기존 구현의 설계, 명명(naming), 테스트를 본보기로 읽히고 싶으면서도, 변경은 새로운 브랜치에만 한정하고 싶은 상황을 상정하고 있습니다.
다음 상태를 상정합니다.
- 공통의 시작 지점으로
feature/internet이 있다 feature/paneA는 이미 생성되어 있으며, 리뷰 중이거나 머지(merge) 대기 중이다- 다음 작업으로
feature/paneB를feature/internet으로부터 만들고 싶다 - AI에게
feature/paneA를 본보기로 참조시키고 싶다 - AI가 변경하는 장소는
feature/paneB로 한정하고 싶다 - 에디터 설정이나 로컬 서버를 위해, 원래 리포지토리의 경로(path)는 개발용으로 유지하고 싶다
이 경우에는 원래의 리포지토리를 feature/paneB의 편집 장소로 만들고, feature/paneA만을 별도의 worktree에 추가합니다.
원래의 리포지토리에서 feature/paneB를 생성한 다음, feature/paneA를 AI의 참조처로 추가합니다.
git switch -c feature/paneB feature/internet
git worktree add ../repo-feature-paneA feature/paneA
이렇게 하면 역할이 나뉩니다.
원래의 리포지토리: AI가 feature/paneB를 편집함
../repo-feature-paneA: AI가 feature/paneA를 참조함
feature/paneB는 feature/internet으로부터 만들어지기 때문에, feature/paneA의 자식 브랜치가 되지 않습니다.
worktree를 추가한 것만으로는 AI가 자동으로 feature/paneA를 본보기로 사용하는 것은 아닙니다. 의뢰할 때 참조처와 편집처를 명시합니다.
`../repo-feature-paneA`는 feature/paneA의 참조용 worktree입니다.
기존 구현의 설계, 명명, 테스트를 확인할 때만 참조해 주세요.
변경, 테스트, commit은 원래의 리포지토리의 feature/paneB에만 추가해 주세요.
AI의 실행 환경이 별도의 worktree를 읽을 수 있는 경우, paneA의 여러 파일을 일반적인 디렉토리(directory)로서 참조할 수 있습니다. AI가 원래의 리포지토리에만 액세스할 수 있는 설정이라면, 참조용 worktree의 경로도 읽기 가능한 범위에 추가합니다.
AI는 worktree가 없어도 Git의 참조를 사용하여 다른 브랜치의 내용을 확인할 수 있습니다.
git diff feature/paneB...feature/paneA
git show feature/paneA:src/example.ts
특정한 차분(diff)이나 파일을 한 번만 확인한다면 이 방법으로 충분합니다.
반면, 기존 구현의 여러 파일, 테스트, 설정을 지속적으로 본보기로 삼는 경우에는 worktree를 두는 편이 다루기 쉬워집니다. AI가 파일 검색이나 내용 확인을 반복할 때, 참조처를 일반적인 디렉토리로 다룰 수 있기 때문입니다.
- 차분이나 특정 파일을 가끔 확인할 뿐이다: worktree는 불필요
paneA를 본보기로 하여paneB를 지속적으로 구현한다: worktree가 편리paneA도 필요에 따라 수정한다: worktree를 두는 가치가 높음
원래의 리포지토리에서 feature/paneA를 열고 있는 경우에는, 먼저 feature/paneB를 생성하고 전환합니다.
git status -sb
git switch -c feature/paneB feature/internet
feature/paneB가 이미 있는 경우에는 다음만으로 충분합니다.
git switch feature/paneB
커밋(commit)되지 않은 변경 사항이 있으면 브랜치를 전환할 수 없는 경우가 있습니다. 필요한 변경 사항을 commit 또는 stash한 뒤 진행합니다.
원래 리포지토리의 루트(root)에서 실행합니다.
git worktree add ../repo-feature-paneA feature/paneA
이 명령은 ../repo-feature-paneA를 생성하고, 그곳에서 feature/paneA를 checkout 합니다.
git worktree list
동일한 로컬 브랜치 (local branch)를 여러 개의 worktree에서 동시에 checkout 할 수는 없습니다. 원래의 리포지토리를 feature/paneB로 전환한 뒤 feature/paneA를 추가하는 이유는 이 제약을 피하기 위해서입니다.
AI에게는 원래 리포지토리의 feature/paneB만을 편집 대상으로 전달합니다. ../repo-feature-paneA는 구현 패턴이나 명명 규칙 (naming), 테스트를 확인하기 위한 참조처입니다.
feature/paneA 자체의 수정이 필요해진 경우에는 참조용 worktree 측에서 별도의 작업으로 취급합니다. paneA의 커밋 (commit)은 paneB에 자동으로 포함되지 않습니다.
이 절차는 원래 리포지토리의 경로에서 feature/paneB를 움직이고 싶을 때 적합합니다.
반대로, feature/paneA를 원래의 고정된 경로에서 움직여야 한다면, 원래의 리포지토리는 paneA인 상태로 두고 paneB를 worktree로 추가합니다.
두 가지 모두 동일한 고정 경로를 필요로 하는 경우, worktree만으로는 동시에 개발할 수 없습니다. 브랜치를 전환하거나, 자동 생성 또는 실행 설정을 경로에 의존하지 않도록 (path-independent) 만들어야 합니다.
참조용 worktree가 더 이상 필요하지 않으면 삭제합니다.
git worktree remove ../repo-feature-paneA
이 작업으로 삭제되는 것은 worktree뿐입니다. feature/paneA 브랜치는 남습니다.
AI에게 기존 구현을 본보기로 참조하게 하고, 변경 사항을 feature/paneB로 한정하려면 다음을 실행합니다.
git switch -c feature/paneB feature/internet
git worktree add ../repo-feature-paneA feature/paneA
AI에게 요청할 때는 paneA를 참조처로, paneB를 편집처로 명시합니다. 기존 구현을 지속적으로 본보기로 삼는 경우에만 worktree를 사용한다면, 이 글의 목적에 부합하는 운영 방식이 됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기