본 문서는 Git Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
Section 44.2: Worktree 이동시키기
현재에는 (버전 2.11.0 기준으로) 기존에 이미 존재하고 있던 worktree 를 이동시키는 git 내장 기능은 제공되고 있지 않으며, 이는 공식적인 bug 로 기술되어 있다 (참고: https://git-scm.com/docs/git-worktree#_bugs).
역주: 해당 페이지를 번역 시점에 방문시 관련 내용이 기술되어 있지 않으며, 대신에
git worktree move <worktree> <new-path>
와 같은 명령어 설명이 있는 것으로 보아 현재에는 정식 지원하는 것으로 보입니다.
이러한 제약사항을 극복하기 위해서, .git reference 파일들에 대한 직접적인 수정을 통해 해결을 시도해 볼 수 있다.
이 예제에서는, repo 의 주 사본이 (main copy) /home/user/project-main 에 존재하고 있으며 보조적인 worktree 는 /home/user/project-1 에 위치해 있는 상태에서 /home/user/project-2 로 이동을 하고자 하는 상황을 가정하고 있다.
아래에 소개된 단계를 진행함에 있어서 중간에 다른 git 명령어를 수행하지 않도록 한다. git 의 garbage collector 가 동작하여 보조적인 tree 에 대한 reference 가 유실될 수 있다. 첫 단계부터 마지막 단계까지를 중단 없이 연속적으로 수행하도록 한다:
- worktree 의 .git 파일이 주 사본 tree 내의 새로운 위치를 가리키도록 변경한다. /home/user/project-1/.git 파일이 아래와 같은 내용을 갖게 될 것이다:gitdir: /home/user/project-main/.git/worktrees/project-2
- 주 사본의 .git 디렉토리 내의 worktree 이름을 아래와 같이 변경한다:$ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
- /home/user/project-main/.git/worktrees/project-2/gitdir 내의 reference 가 새로운 위치를 가리키도록 변경한다. 이 예제에서는, 해당 파일이 아래와 같은 내용을 갖게 될 것이다:/home/user/project-2/.git
- 마지막으로, worktree 를 새로운 위치로 이동시킨다:$ mv /home/user/project-1 /home/user/project-2
위 과정을 정확하게 수행하였다면, 존재하는 worktree 들에 대한 목록 요청은 새로운 위치를 반영하여 결과를 출력하게 될 것이다:
$ git worktree list
/home/user/project-main 23f78ad [master]
/home/user/project-2 78ac3f3 [branch-name]
이 단계에서는 git worktree prune
을 수행하여도 안전하다.
[출처] https://books.goalkicker.com/GitBook/ (CC BY-SA)
'번역 > Git Notes for Professionals' 카테고리의 다른 글
45.1: 원격 저장소들 표시하기 (0) | 2020.04.20 |
---|---|
45: Git Remote (0) | 2020.04.20 |
44.1: worktree 사용하기 (0) | 2020.04.16 |
44: Worktree (0) | 2020.04.14 |
43.9: 검색식에 부합하는 가장 최근 커밋 찾기: <rev>^{/<text>},:/<text> (0) | 2020.04.13 |