리포지토리가 작업 트리의 위치를 알고 있어야하며 그 반대도 마찬가지입니다.
작업 트리가있는 위치를 저장소에 알리려면 구성 값을 설정하십시오 core.worktree
. 작업 트리에 git 디렉토리의 위치를 알리려면 .git (폴더가 아닙니다!)라는 파일을 추가하고 다음과 같은 줄을 추가하십시오
gitdir: /path/to/repo.git
git 1.7.5부터 init 명령은 이에 대한 추가 옵션을 배웠습니다.
당신은 새로운 별도의 저장소를 초기화 할 수 있습니다
git init --separate-git-dir /path/to/repo.git
이것은 별도의 디렉토리에서 git 저장소를 초기화하고 .git 파일을 현재 디렉토리 (새 저장소의 작업 디렉토리)에 추가합니다.
1.7.5 이전에는 약간 다른 매개 변수를 사용하고 .git 파일을 직접 추가해야했습니다.
별도의 저장소를 초기화하기 위해 다음 명령은 작업 트리를 저장소와 연결합니다.
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
현재 디렉토리는 작업 트리가되고 git은에 저장소를 사용합니다 /path/to/repo.git
. init 명령은 매개 변수 core.worktree
로 지정된 값을 자동으로 설정합니다 --git-dir
.
이것에 대한 별칭을 추가 할 수도 있습니다.
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
읽기 전용 작업 디렉토리에서 자식 버전 제어 사용
위의 지식을 통해 쓰기 권한없이 작업 디렉토리에 대한 git 버전 제어를 설정할 수도 있습니다. 중 하나를 사용하면 경우 --git-dir
모든 자식 명령 또는 (대신 작업 디렉토리의) 저장소 내에서 모든 명령을 실행, 당신은 .git 파일을 남길 수 있으므로 작업 디렉토리 내의 모든 파일을 만들 필요가 없습니다. 레오 답변 참조