Подтвердить что ты не робот

Как `git ls-files` только для одного уровня каталога.

Я использую msysgit (1.7.9), и я ищу правильный вызов команды git ls-files, чтобы показывать только (отслеживаемые) файлы и каталоги на текущем уровне, либо из индекса, либо текущий рабочий каталог, если это проще.

По сути, это даст список каталогов, аналогичный тому, что вы увидите на Github. Исходя из Windows, я не слишком хорошо разбираюсь в правильном способе делать глобусы (?).

4b9b3361

Ответ 1

Я думаю, что вы хотите git ls-tree HEAD sed'd попробовать. Второе слово вывода ls-tree будет tree для каталогов, blob для файлов, commit для подмодулей, имя файла - все после вкладки ascii

Ответ 2

Я верю, что git ls-tree --name-only [branch] сделает то, что вы ищете.

Ответ 3

git ls-tree <tree-ish> - это хорошо и все, но я не могу понять, как указать индекс как <tree-ish>. (Хотя я уверен, что там обязательно будет ссылка на все шапки, чтобы сделать именно это.)

Во всяком случае ls-files неявно работает над индексом, поэтому я мог бы также использовать это:

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

Показывает файлы и каталоги только в текущем каталоге.

Измените аргумент cut -f для управления глубиной. Например, -f-2 (эта тире две) показывает файлы и каталоги на глубине до двух уровней:

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

ЕСЛИ вы указываете аргумент <path> на ls-files, убедитесь, что вы увеличили -f для размещения ведущих каталогов:

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

Ответ 4

Чтобы просто просмотреть файлы в текущем рабочем каталоге, которые отслеживаются с помощью git, я обнаружил, что следующее в несколько раз быстрее, чем использование git ls-tree...:

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

Было бы немного побеседовать с sed, если бы вы также хотели включить каталоги, что-то вроде строк:

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

предполагая, что у вас нет символов '/' в именах ваших файлов. Также как...

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

чтобы также отображать "невидимые" (еще не отслеживаемые) файлы.