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.worktree
mit dem --git-dir
Parameter 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-dir
fü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