수색…


통사론

  • 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 명령을 수행하지 마십시오. 그렇지 않으면 가비지 컬렉터가 트리거되고 보조 트리에 대한 참조가 손실 될 수 있습니다. 중단없이 시작부터 끝까지 다음 단계를 수행하십시오.

  1. 기본 트리 안의 새 위치를 가리 키도록 작업 트리의 .git 파일을 변경하십시오. /home/user/project-1/.git 파일은 이제 다음을 포함해야합니다 :

    gitdir: /home/user/project-main/.git/worktrees/project-2
    
  2. 거기에있는 작업 트리의 디렉터리를 이동하여 주 프로젝트의 .git 디렉터리에서 작업 트리의 이름을 바꿉니다.

    $ mv /home/user/project-main/.git/worktrees/project-1 /home/user/project-main/.git/worktrees/project-2
    
  3. /home/user/project-main/.git/worktrees/project-2/gitdir 내부의 참조를 새 위치를 가리 키도록 변경하십시오. 이 예에서 파일의 내용은 다음과 같습니다.

    /home/user/project-2/.git
    
  4. 마지막으로 작업 영역을 새 위치로 이동합니다.

    $ 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 을 실행하는 것이 안전해야합니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow