2011-02-24 42 views
10

Tengo varios repositorios git en mi sistema y quiero enumerarlos todos en la terminal.¿Hay alguna manera de listar repositorios git en la terminal?

Lo que estoy buscando es algo como esto:

/ruta/a/mi/git/repo/1/REPONAME1
/ruta/a/mi/git/repo/2/REPONAME2
/ruta/a/mi/git/repo/3/REPONAME3

Si puede encontrar la forma de mostrar el nombre de la sucursal y el estado del repositorio, por ejemplo. [maestro] c: 0 u: 1 d: 0, eso sería genial.

+2

Este es un poco similar a http://stackoverflow.com/questions/2765253/git-status-across-multiple-repositories-on-a-mac donde también se pueden encontrar ideas útiles. – VonC

+0

Sí, me ayudó mucho. Gracias por señalar eso. – studiomohawk

Respuesta

7

Para enumerar todos los repositorios git que tiene en su sistema, puede ejecutar el siguiente comando en un terminal shell bash (en la línea de comandos) y encontrarlos.

find/-name .git -type d -exec dirname {} \; 
+0

Esta es una primera aproximación razonable, pero extraña mucho. Se perderán repositorios simples, al igual que cualquier repositorio que use un archivo regular llamado .git para especificar un directorio de git. –

+0

* 'C: \ xampp \ htdocs \ rimedit>' * 'find/-name .git -type d -exec dirname {} \' '" C:/Users/Jakub/AppData/Local/GitHub/PortableGit_fed20eba68b3e238e49a47cdfed0a45 783d93651 /bin/find.exe ":' ** 'falta de argumento para' -exec'' ** –

2

lsgit es un script que hace esto. Básicamente es un contenedor alrededor del locate -br '^HEAD$'.

Si hay múltiples clones del mismo repos en la máquina local, indicará que esos repos están relacionados.

5

Encontré esto más exacto que el comando find y mucho más rápido. Estoy seguro de que se puede mejorar, pero es un buen comienzo. Obviamente, su base de datos de archivos deberá estar actualizada antes de ejecutar este comando. En sistemas Linux, puede hacerlo ejecutando 'updatedb'.

locate -br '\.git$' | rev | cut -c 6- | rev 
Cuestiones relacionadas