Devi solo assicurarti che il repository sappia dove si trova l'albero di lavoro e viceversa.
Per far sapere al repository dove si trova l'albero di lavoro, impostare il valore di configurazione core.worktree
. Per far sapere all'albero di lavoro dove si trova la directory git, aggiungi un file chiamato .git (non una cartella!) E aggiungi una riga come
gitdir: /path/to/repo.git
Da git 1.7.5 il comando init ha appreso un'opzione aggiuntiva per questo.
È possibile inizializzare un nuovo repository separato con
git init --separate-git-dir /path/to/repo.git
Questo inizializzerà il repository git nella directory separata e aggiungerà il file .git nella directory corrente, che è la directory di lavoro del nuovo repository.
Precedentemente alla 1.7.5 dovevi usare parametri leggermente diversi e aggiungere tu stesso il file .git.
Per inizializzare un repository separato il seguente comando collega l'albero di lavoro al repository:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
La tua directory attuale sarà l'albero di lavoro e git utilizzerà il repository su /path/to/repo.git
. Il comando init imposterà automaticamente il core.worktree
valore come specificato con il --git-dir
parametro.
Puoi anche aggiungere un alias per questo:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
Usa il controllo versione git su una directory di lavoro di sola lettura
Con le conoscenze di cui sopra, è anche possibile impostare il controllo versione git per una directory di lavoro senza disporre delle autorizzazioni di scrittura. Se si utilizza --git-dir
su ogni comando git o si esegue ogni comando all'interno del repository (anziché nella directory di lavoro), è possibile escludere il file .git e quindi non è necessario creare alcun file all'interno della directory di lavoro. Vedi anche la risposta del Leo