Sie müssen nur sicherstellen, dass das Repository weiß, wo sich der Arbeitsbaum befindet und umgekehrt.
Legen Sie den Konfigurationswert fest, damit das Repository weiß, wo sich der Arbeitsbaum befindet core.worktree. Fügen Sie eine Datei mit dem Namen .git (kein Ordner!) Und eine Zeile wie hinzu, um dem Arbeitsbaum mitzuteilen, wo sich das Git-Verzeichnis befindet
gitdir: /path/to/repo.git
Seit git 1.7.5 hat der Befehl init eine zusätzliche Option dafür gelernt.
Sie können ein neues separates Repository mit initialisieren
git init --separate-git-dir /path/to/repo.git
Dadurch wird das Git-Repository im separaten Verzeichnis initialisiert und die Git-Datei im aktuellen Verzeichnis hinzugefügt, das das Arbeitsverzeichnis des neuen Repositorys ist.
Vor 1.7.5 mussten Sie leicht unterschiedliche Parameter verwenden und die .git-Datei selbst hinzufügen.
Um ein separates Repository zu initialisieren, verknüpft der folgende Befehl den Arbeitsbaum mit dem Repository:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
Ihr aktuelles Verzeichnis ist der Arbeitsbaum und Git verwendet das Repository unter /path/to/repo.git. Der Befehl init setzt automatisch den core.worktreemit dem --git-dirParameter angegebenen Wert .
Sie können sogar einen Alias hinzufügen:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
Verwenden Sie die Git-Versionskontrolle für ein schreibgeschütztes Arbeitsverzeichnis
Mit den oben genannten Kenntnissen können Sie sogar die Git-Versionskontrolle für ein Arbeitsverzeichnis einrichten, ohne über Schreibberechtigungen zu verfügen. Wenn Sie entweder --git-dirfür jeden git-Befehl verwenden oder jeden Befehl aus dem Repository (anstelle des Arbeitsverzeichnisses) ausführen, können Sie die .git-Datei weglassen und müssen daher keine Dateien im Arbeitsverzeichnis erstellen. Siehe auch Leos Antwort