2012-09-06 23 views
55

Estoy buscando algo así como git list-path imprimiendo la ruta del repositorio asociado (el directorio .git).Cómo encontrar la ruta del repositorio git local cuando estoy posiblemente en un subdirectorio

Un poco de historia: he configurado el control de versión git en bastantes de mis proyectos/carpetas . Algunos de ellos están anidados, por lo que un directorio con echo own repository es una subcarpeta a otro directorio rastreado con otro repositorio.

E.g. en mi directorio de inicio (~) utilizo git para rastrear mis archivos de puntos, pero en la carpeta ~/photo/meta-mix/ Tengo otro proyecto que rastrear con un repositorio separado . Ahora, digamos, he configurado otro proyecto en el directorio ~/photo/meta-match/, pero ya no sé si tiene su propio repositorio . Así que quiero saber si este directorio está controlado por la versión y su repositorio.

¿Cómo puedo hacer esto con un comando git? git status me puede dar

nothing to commit 

en ambos casos, cuando ~/photo/meta-match/ tiene su propio repositorio o cuando simplemente se refiere al repositorio de ~.

Respuesta

70
git rev-parse --show-toplevel 

podría ser suficiente si se ejecuta dentro de un git repo.
Desde la página git rev-parse hombre:

--show-toplevel 

Muestra la ruta absoluta del directorio de nivel superior.

Para las versiones antiguas (antes 1.7.x), las otras opciones se enumeran en "Is there a way to get the git root directory in one command?":

git rev-parse --git-dir 

que daría a la ruta del directorio .git.


El PO menciona:

git rev-parse --show-prefix 

que devuelve la ruta de acceso local en la raíz git repo. (Vacío si está en la raíz git repo)


Nota: para simplemente comprobando si uno está en un repositorio git, creo que el siguiente comando muy expresiva:

git rev-parse --is-inside-work-tree 

Y sí, si es necesario comprobar si se encuentra en una carpeta .git git-dir:

git rev-parse --is-inside-git-dir 
+0

Desafortunadamente en versiones anteriores de 'git' (antes de v1.7.0) que sólo imprime' --show-toplevel' - ni siquiera un error. –

+0

@BenJackson ¿hay alguna posibilidad de actualizar? Si no, he editado para agregar otro comando – VonC

+0

No es mi pregunta: solo estoy comentando la respuesta.Dado el antiguo comportamiento, puedo ver una verdadera confusión si alguien lanza un guión basándose en ese método. –

Cuestiones relacionadas