Il vous suffit de vous assurer que le référentiel sait où se trouve l'arbre de travail et vice versa.
Pour indiquer au référentiel où se trouve l'arborescence de travail, définissez la valeur de configuration core.worktree
. Pour que l'arborescence de travail sache où se trouve le répertoire git, ajoutez un fichier nommé .git (pas un dossier!) Et ajoutez une ligne comme
gitdir: /path/to/repo.git
Depuis git 1.7.5, la commande init a appris une option supplémentaire pour cela.
Vous pouvez initialiser un nouveau référentiel séparé avec
git init --separate-git-dir /path/to/repo.git
Cela initialisera le référentiel git dans le répertoire séparé et ajoutera le fichier .git dans le répertoire actuel, qui est le répertoire de travail du nouveau référentiel.
Avant la version 1.7.5, vous deviez utiliser des paramètres légèrement différents et ajouter vous-même le fichier .git.
Pour initialiser un référentiel distinct, la commande suivante relie l'arborescence de travail au référentiel:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
Votre répertoire actuel sera l'arborescence de travail et git utilisera le référentiel à /path/to/repo.git
. La commande init définira automatiquement la core.worktree
valeur spécifiée avec le --git-dir
paramètre.
Vous pouvez même ajouter un alias pour cela:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
Utiliser le contrôle de version git sur un répertoire de travail en lecture seule
Avec les connaissances ci-dessus, vous pouvez même configurer le contrôle de version git pour un répertoire de travail sans avoir les autorisations d'écriture. Si vous utilisez --git-dir
sur chaque commande git ou exécutez chaque commande à partir du référentiel (au lieu du répertoire de travail), vous pouvez omettre le fichier .git et n'avez donc pas besoin de créer de fichiers dans le répertoire de travail. Voir aussi la réponse des Léos