Configurando la carpeta .git en una location personalizada

Aquí está mi estructura dir actual:

  • mygit
  • código
    • .git
    • morecode
      • mi código
  1. La carpeta de códigos es monitoreada por git y los files de git están en el código / .git usual
  2. Estoy trabajando solo en una parte de este código, es decir, mycode

Me gustaría usar git para administrar mi código, pero no quiero que sus files se coloquen en el código esperado / morecode / mycode / .git , sino fuera de la carpeta del código, por ejemplo, en mygit .

Alguna idea de como hacer eso?

Mi respuesta original está a continuación, pero he reconsiderado esto y no creo que eso sea realmente lo que desea, no había notado en la primera lectura que solo quería un subdirectory del repository allí. En cualquier caso, usar --git-dir y los amigos se --git-dir confusos rápidamente – debe recordar, por ejemplo, que todavía hay un solo índice (área de preparación) independientemente de dónde esté haciendo los commands de git.

En cambio, creo que realmente lo que quieres hacer es hacer de mygit un enlace simbólico que apunte al subdirectory, y luego hacer todas tus operaciones de git en el directory de code .


Es posible que desee consultar la documentation en la página de manual de git , y particularmente las secciones en las --git-dir y --work-tree y las variables de entorno GIT_DIR y GIT_WORK_TREE similares. Puede usarlos para establecer directorys arbitrarios para que sean sus directorys de tree y git de trabajo.

Una cosa que es fácil de perder es que si no pasa una ruta absoluta a --git-dir (o GIT_DIR ) será relativo al tree de trabajo , no a su directory actual.

Además, en lugar de usar un enlace simbólico, simplemente puede hacer .git un file normal y ponerle una ruta:

 $ echo gitdir: / ruta / a / gitdir> .git