Список файлов, не отслеживаемых 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