git ls-файлы в голом репозитории

Я хочу получить доступ к пустому репозиторию git и вывести список всех файлов в репозитории.

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

Пример вывода:

$ git ls-files
README.md
file1.js
file2.js
file3.js
folder1/file4.js
folder2/file5.js

В голом репозитории git это происходит без проблем. Он просто не возвращает никаких файлов (но успешно завершает работу):

$ cd my-bare-repository
$ git ls-files #returns nothing
$ echo $? #print exit code from previous command
$ 0

Теперь я знаю, что мне нужно предоставить осмысленную ветвь или мастер для отображения. Но как я могу получить этот список файлов, которые, как мне известно, находятся в моем репозитории?


person Jesper Rønn-Jensen    schedule 18.09.2014    source источник


Ответы (1)


Вы можете попробовать другую команду, которая перечисляет файлы:

git ls-tree --full-tree -r HEAD

Согласно этому комментарию, команда git ls-tree работает в голый репозиторий.

person VonC    schedule 18.09.2014
comment
Спасибо, это работает. Однако в моем текущем примере я получаю один и тот же вывод с --full-tree и без него. - person Jesper Rønn-Jensen; 18.09.2014
comment
@JesperRønn-Jensen, у вас также есть git ls-tree --full-tree -r --name-only HEAD , чтобы перечислить только имена файлов (без лишней информации о разрешениях и значениях SHA для больших двоичных объектов) - person VonC; 18.09.2014
comment
Я принимаю этот ответ, так как это больше, чем я просил :) +10 за правильность, +10 за быстрый ответ :) - person Jesper Rønn-Jensen; 18.09.2014
comment
git ls-files работает у меня в голом репозитории с git 2.27 и, вероятно, уже какое-то время поддерживает его. - person Victor Roetman; 28.05.2021
comment
@VictorRoetman Да: он может перечислять файлы в индексе. по умолчанию (git-scm.com/docs/git-ls-files ) И технически голый репозиторий может иметь индекс (github.com/libgit2/ libgit2sharp/issues/). Но в моих голых репозиториях git ls-files ничего не возвращает. - person VonC; 28.05.2021