Solo necesita asegurarse de que el repositorio sepa dónde está el árbol de trabajo y viceversa.
Para que el repositorio sepa dónde está el árbol de trabajo, establezca el valor de configuración core.worktree
. Para que el árbol de trabajo sepa dónde está su directorio git, agregue un archivo llamado .git (¡no una carpeta!) Y agregue una línea como
gitdir: /path/to/repo.git
Desde git 1.7.5 el comando init aprendió una opción adicional para esto.
Puede inicializar un nuevo repositorio separado con
git init --separate-git-dir /path/to/repo.git
Esto inicializará el repositorio git en el directorio separado y agregará el archivo .git en el directorio actual, que es el directorio de trabajo del nuevo repositorio.
Anteriormente a 1.7.5 tenía que usar parámetros ligeramente diferentes y agregar el archivo .git usted mismo.
Para inicializar un repositorio separado, el siguiente comando vincula el árbol de trabajo con el repositorio:
git --git-dir=/path/to/repo.git --work-tree=. init && echo "gitdir: /path/to/repo.git" > .git
Su directorio actual será el árbol de trabajo y git usará el repositorio en /path/to/repo.git
. El comando init establecerá automáticamente el core.worktree
valor especificado con el --git-dir
parámetro.
Incluso podría agregar un alias para esto:
[alias]
initexternal = !"f() { git --work-tree=. --git-dir=\"$1\" init && echo \"gitdir: $1\" >> .git; }; f"
Utilice el control de versiones de git en un directorio de trabajo de solo lectura
Con el conocimiento anterior, incluso puede configurar el control de versión de git para un directorio de trabajo sin tener permisos de escritura. Si usa --git-dir
en cada comando git o ejecuta cada comando desde el repositorio (en lugar del directorio de trabajo), puede omitir el archivo .git y, por lo tanto, no necesita crear ningún archivo dentro del directorio de trabajo. Ver también respuesta de Leo