Список файлов, не отслеживаемых Git LFS

Я инициализирую новый репозиторий Git с огромной кучей файлов. В репо используется Git LFS. Я хочу убедиться, что я сказал LFS отслеживать все файлы, которые должны быть обработаны, прежде чем я сделаю свой первый коммит.

я вижу это git lfs ls-files перечислит все файлы, которые отслеживаются LFS. Тем не менее, (а) я хочу наоборот: все файлы в репо, которые не отслеживаются LFS (и находятся в .gitignore) и (b) эта команда работает только после того, как вы зафиксировали файлы.

Есть ли у кого-нибудь git-fu или Ubuntu-fu, чтобы перечислить все файлы в репо, которые не игнорируются и не соответствуют шаблонам дорожек в различных .gitattribute файлы Git LFS использует?


Самое близкое, что я получил, - это команда, которая перечисляет файлы в репозитории размером более 100 КБ, а затем вручную сканирует все файлы и надеется, что они покрыты шаблоном отслеживания.

find . -type f -exec du -Sha -t 100000 {} +

2 ответа

Несмотря на то, что этот вопрос касается файлов, которые не были переданы, позвольте мне предложить решение для перечисления файлов, отслеживаемых git, но не для git-lfs после коммита, что можно сделать путем объединения списка файлов, отслеживаемых git (git ls-files) с отслеживаемыми git-lfs (git lfs ls-files | cut -d' ' -f3-), а затем только взять файлы, которые являются уникальными в этом списке:

{ git ls-files && git lfs ls-files | cut -d' ' -f3-; } | sort | uniq -u

После чего вы можете редактировать свой коммит (git rm --cached а также git commit --amend) если вы заметили файл, который проник в...

На этапе предварительной фиксации, следя за списком неотслеживаемых файлов и последовательно используя git lfs track а также git add должно быть довольно безопасно.

Позвольте мне дать несколько идей:

Чтобы получить список всех файлов в вашем хранилище:

find . -type f > all.txt

Чтобы получить список всех файлов, которые будут отслеживаться LFS:

set -f; for f in $(cat .gitattributes | cut -d ' ' -f 1); do find . -name $f; done > lfs.txt

Чтобы получить список всех файлов, которые НЕ будут отслеживаться LFS:

grep -f lfs.txt -F -w -v all.txt > non-lfs.txt
Другие вопросы по тегам