Musisz tylko upewnić się, że repozytorium wie, gdzie znajduje się drzewo robocze i odwrotnie.
Aby repozytorium wiedziało, gdzie znajduje się drzewo robocze, ustaw wartość konfiguracyjną core.worktree
. Aby powiadomić drzewo robocze, gdzie jest katalog git, dodaj plik o nazwie .git (nie folder!) I dodaj linię taką jak
gitdir: /path/to/repo.git
Od wersji 1.7.5 git polecenie init nauczyło się dodatkowej opcji do tego.
Możesz zainicjować nowe oddzielne repozytorium za pomocą
git init --separate-git-dir /path/to/repo.git
Spowoduje to zainicjowanie repozytorium git w oddzielnym katalogu i dodanie pliku .git do bieżącego katalogu, który jest katalogiem roboczym nowego repozytorium.
Wcześniej w wersji 1.7.5 trzeba było używać nieco innych parametrów i samodzielnie dodawać plik .git.
Aby zainicjować oddzielne repozytorium, następujące polecenie łączy drzewo robocze z repozytorium:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
Twój bieżący katalog będzie drzewem roboczym, a git użyje repozytorium pod adresem /path/to/repo.git
. Polecenie init automatycznie ustawi core.worktree
wartość określoną w --git-dir
parametrze.
Możesz nawet dodać do tego alias:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
Użyj kontroli wersji git w katalogu roboczym tylko do odczytu
Mając powyższą wiedzę, możesz nawet skonfigurować kontrolę wersji git dla katalogu roboczego bez posiadania uprawnień do zapisu. Jeśli używasz --git-dir
przy każdym poleceniu git lub wykonujesz każde polecenie z repozytorium (zamiast katalogu roboczego), możesz pominąć plik .git i dlatego nie musisz tworzyć żadnych plików w katalogu roboczym. Zobacz także odpowiedź Leosa