Quiz: Multiple Working Trees
한국어 원문으로 표시합니다.
git worktree add 로 만든 두 번째 작업 디렉터리 안의 .git 은 무엇인가?
- 원래 저장소의 관리 디렉터리를 가리키는 한 줄짜리 파일
- 원래 저장소를 그대로 복사한 독립된 객체 저장소
- 원래
.git을 가리키는 심볼릭 링크 디렉터리 - 브랜치 참조만 담긴 축소판 저장소 디렉터리
git worktree add /tmp/dup main 이 already used by worktree 로 거절되는 근본 이유는?
- 작업 사본은 저장소마다 최대 두 개까지만 허용되기 때문
main브랜치는 보호 브랜치로 지정되어 체크아웃이 막히기 때문- HEAD 와 인덱스는 자리마다 따로지만 브랜치 참조는 저장소가 하나로 들고 있기 때문
- 대상 디렉터리가 이미 있어서 덮어쓰기를 피하려는 것이기 때문
작업 사본 디렉터리를 rm -rf 로 지웠다. git worktree list 는 어떻게 되는가?
- 그 자리가 곧바로 목록에서 사라지고 브랜치도 함께 지워진다
- 그 자리가
prunable표시와 함께 목록에 계속 남는다 - 명령 자체가 오류를 내며 다른 자리도 보여 주지 못한다
- 다음 커밋 때 git 이 그 디렉터리를 자동으로 다시 만든다
git worktree lock 을 거는 대표적인 이유는?
- 그 자리에서 다른 사람이 커밋하지 못하게 쓰기 권한을 막으려고
- 그 브랜치를 강제 푸시로부터 보호하려고
- 그 자리의 인덱스를 읽기 전용으로 고정해 두려고
- 외장 디스크처럼 잠시 안 보이는 자리를 prune 이 치우지 못하게 하려고
같은 커밋을 두 자리에서 동시에 열어 두고 싶다. 어떻게 하는가?
git worktree add --detach <경로> <커밋>으로 브랜치 없이 붙인다- 같은 브랜치 이름으로 두 번
add한 뒤 두 번째에--force를 준다 - 두 번째 자리에서
git checkout --orphan으로 새 뿌리를 만든다 - 그 커밋을 가리키는 태그를 만들고 태그 이름으로
add한다
작업 사본 여럿이 clone 여럿보다 유리한 지점은?
- 각 자리가 서로 다른 원격 주소를 따로 가질 수 있다
- 한 자리에서 만든 커밋이 다른 자리에 자동으로 병합된다
- 객체와 브랜치 참조를 공유해 이력을 한 벌만 두고 push·fetch 없이 오간다
- 자리마다 설정 파일을 따로 두어 서로 다른 신원을 쓸 수 있다