Ответ 1
Я думаю, что вы хотите git ls-tree HEAD
sed'd попробовать. Второе слово вывода ls-tree будет tree
для каталогов, blob
для файлов, commit
для подмодулей, имя файла - все после вкладки ascii
Я использую msysgit (1.7.9), и я ищу правильный вызов команды git ls-files
, чтобы показывать только (отслеживаемые) файлы и каталоги на текущем уровне, либо из индекса, либо текущий рабочий каталог, если это проще.
По сути, это даст список каталогов, аналогичный тому, что вы увидите на Github. Исходя из Windows, я не слишком хорошо разбираюсь в правильном способе делать глобусы (?).
Я думаю, что вы хотите git ls-tree HEAD
sed'd попробовать. Второе слово вывода ls-tree будет tree
для каталогов, blob
для файлов, commit
для подмодулей, имя файла - все после вкладки ascii
Я верю, что git ls-tree --name-only [branch]
сделает то, что вы ищете.
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
Чтобы просто просмотреть файлы в текущем рабочем каталоге, которые отслеживаются с помощью 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)
чтобы также отображать "невидимые" (еще не отслеживаемые) файлы.