수색…
통사론
- git worktree add [-f] [--detach] [--checkout] [-b <new-branch>] <path> [<branch>]
- git worktree prune [-n] [-v] [--expire <만료>]
- 자식 작업 트리 목록 [--porcelain]
매개 변수
매개 변수 | 세부 |
---|---|
-f --force | 기본적으로 다른 작업 트리에서 <branch> 가 이미 체크 아웃 된 경우 새 작업 트리를 만들지 않습니다. 이 옵션은 안전 장치를 무시합니다. |
-b <new-branch> -B <new-branch> | add를 사용하여 <branch> 에서 시작하는 <new-branch> 라는 새 분기를 만들고 <new-branch> 를 새로운 작업 트리로 체크 아웃하십시오. <branch> 가 생략되면 기본값은 HEAD 입니다. 기본적으로 -b 이미 존재하는 경우 새 분기를 작성하는 것을 거부합니다. -B 는 <new-branch> 를 <branch> 재설정하면서이 보호 장치를 무시합니다. |
--떼다 | 추가를 사용하여 새 작업 트리에서 HEAD 를 분리하십시오. |
- [no-] 체크 아웃 | 기본적으로 add는 <branch> --no-checkout 하지만 --no-checkout 은 스파 스 체크 아웃 구성과 같이 사용자 정의를 만들기 위해 체크 아웃을 억제하는 데 사용될 수 있습니다. |
-n --dry-run | 가지 치기로, 아무것도 제거하지 말라; 제거 할 내용을보고하십시오. |
- porcelain | 목록을 사용하면 스크립트에 대해 구문 분석이 쉬운 형식으로 출력됩니다. 이 형식은 Git 버전과 사용자 구성에 관계없이 안정적으로 유지됩니다. |
-v --verbose | 가지 치기로, 모든 제거를보고하십시오. |
--expire <time> | 가지 치기를 사용하면 <time> 보다 오래된 사용되지 않는 작업 트리 만 만료됩니다. |
비고
자세한 내용은 공식 문서를 참조하십시오. https://git-scm.com/docs/git-worktree .
작업 트리 사용
당신은 새로운 기능을 작업하는 중입니다. 사장님은 즉시 뭔가를 고쳐달라고 요구합니다. 일반적으로 git stash
을 사용하여 변경 사항을 일시적으로 저장하고 싶을 수 있습니다. 그러나이 시점에서 작업 트리는 혼란 상태입니다 (새 파일, 이동 파일 및 제거 된 파일 및 기타 비트와 조각이 흩어져 있음). 그러면 작업 진행을 방해하지 않으려 고합니다.
작업 트리를 추가하면 임시 링크 된 작업 트리를 만들어 응급 수정을 수행하고 완료되면 제거한 다음 이전 코딩 세션을 다시 시작합니다.
$ git worktree add -b emergency-fix ../temp master
$ pushd ../temp
# ... work work work ...
$ git commit -a -m 'emergency fix for boss'
$ popd
$ rm -rf ../temp
$ git worktree prune
참고 :이 예제에서는 수정 프로그램은 여전히 응급 수정 지점에 있습니다. 이 시점에서 당신은 아마도 git merge
이나 git format-patch
하고 나중에 비상 - 수정 지점을 제거하고자합니다.
작업 트리 이동
현재 (버전 2.11.0 현재) 이미 존재하는 작업 트리를 이동하는 기본 제공 기능은 없습니다. 이것은 공식 버그로 나열되어 있습니다 ( https://git-scm.com/docs/git-worktree#_bugs 참조) .
이 제한을 극복하기 위해 .git
참조 파일에서 직접 수동 작업을 수행하는 것이 가능합니다.
이 예제에서 repo의 주 복사본은 /home/user/project-main
있고 보조 작업 트리는 /home/user/project-1
에 있으며이 파일을 /home/user/project-2
.
이 단계들 사이에서 git 명령을 수행하지 마십시오. 그렇지 않으면 가비지 컬렉터가 트리거되고 보조 트리에 대한 참조가 손실 될 수 있습니다. 중단없이 시작부터 끝까지 다음 단계를 수행하십시오.
기본 트리 안의 새 위치를 가리 키도록 작업 트리의
.git
파일을 변경하십시오./home/user/project-1/.git
파일은 이제 다음을 포함해야합니다 :gitdir: /home/user/project-main/.git/worktrees/project-2
거기에있는 작업 트리의 디렉터리를 이동하여 주 프로젝트의
.git
디렉터리에서 작업 트리의 이름을 바꿉니다.$ 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
내부의 참조를 새 위치를 가리 키도록 변경하십시오. 이 예에서 파일의 내용은 다음과 같습니다./home/user/project-2/.git
마지막으로 작업 영역을 새 위치로 이동합니다.
$ mv /home/user/project-1 /home/user/project-2
모든 작업을 올바르게 수행했다면 기존 작업 트리를 나열하면 새 위치를 참조해야합니다.
$ git worktree list
/home/user/project-main 23f78ad [master]
/home/user/project-2 78ac3f3 [branch-name]
git worktree prune
을 실행하는 것이 안전해야합니다.