see repositories remote origin all git ls glob

repositories - list git origin



cómo `git ls-files` para un solo nivel de directorio. (5)

Creo que git ls-tree --name-only [branch] hará lo que estás buscando.

Estoy usando msysgit (1.7.9), y estoy buscando la invocación correcta del git ls-files para mostrar solo los archivos y directorios (rastreados) en el nivel actual, ya sea desde el índice o desde el actual Directorio de trabajo si eso es más fácil.

Esencialmente daría un listado de directorios similar al que vería en Github. Viniendo de Windows, no estoy muy familiarizado con la forma correcta de hacer el globo (?).


Creo que quieres probar el git ls-tree HEAD . La segunda palabra de la salida de ls-tree será tree para directorios, blob para archivos, commit para submodulesm, el nombre del archivo es todo después de la pestaña ascii


Me sorprende que esto sea tan difícil ... pero no empiece a hablar de git.

Una variante de la respuesta de jthill parece ser aliasable (hey, soy lingüista, tengo una licencia para hacer nuevas palabras). La variante es

ls -d `git ls-tree HEAD | sed -e "s/^.*/t//"`

Esto usa ''ls'' para formatear la salida, por lo que obtienes un código de color (si lo usas), etc. También funciona como un alias:

alias gitls=''ls -d `git ls-tree HEAD | sed -e "s/^.*/t//"`''

FWIW, también puede asignar un alias al comando recursivo, de modo que utilizó el formato ''ls'' (por ejemplo, si su ruta + nombres de archivo no son demasiado largos, obtendrá una salida de dos columnas, codificación por colores de los ejecutables, etc.)

alias gitls-r=''ls `git ls-files`''


Para simplemente listar los archivos en el directorio de trabajo actual que son rastreados por git, encontré que lo siguiente es varias veces más rápido que usar git ls-tree... :

ls | grep -f <(git ls-files)

Tomaría un poco de lío con sed si también quisiera incluir directorios, algo así como:

ls | grep -f <(git ls-files | sed ''s///.*//g'' | sort | uniq)

asumiendo que no tiene ningún carácter ''/'' en los nombres de sus archivos. Tanto como...

ls -a | grep -f <(git ls-files | sed ''s///.*//g'' | sort | uniq)

para listar también archivos "invisibles" (aún rastreados).


git ls-tree <tree-ish> es bueno y todo, pero no puedo averiguar cómo especificar el índice como <tree-ish> . (Aunque estoy seguro de que seguramente habrá alguna referencia de mayúsculas para hacer eso).

De todos modos, ls-files funcionan de manera implícita en el índice, así que podría usar eso:

$ git ls-files | cut -d/ -f1 | uniq

Esto muestra archivos y directorios solo en el directorio actual.

Cambie el argumento de cut de s para controlar la profundidad. Por ejemplo, -f-2 (que es el guión dos) muestra archivos y directorios con hasta dos niveles de profundidad:

$ git ls-files | cut -d/ -f-2 | uniq

SI especifica el argumento <path> para ls-files , asegúrese de aumentar -f para acomodar los directorios principales:

$ git ls-files foo/bar | cut -d/ -f-3 | uniq