[英]Should git ls-files list the files being tracked by LFS (git lfs ls-files)
[英]List files not tracked by Git LFS
我正在用一大堆文件初始化一个新的Git仓库。 回购正在使用Git LFS 。 我想确保在我第一次提交之前告诉LFS跟踪应该处理的所有文件。
我看到git lfs ls-files
将列出LFS跟踪的所有文件。 但是,(a)我想要相反:repo中未被LFS跟踪的所有文件(并且在.gitignore
),以及(b)此命令仅在您提交文件后才有效。
有没有人有一些git-fu或Ubuntu-fu列出repo中所有未被忽略的文件并且与Git LFS使用的各种.gitattribute
文件中的轨道模式不匹配?
我最接近的是这个命令,它将repo中的文件列出超过100kB,然后手动扫描所有文件,并希望我用跟踪模式覆盖它们。
find . -type f -exec du -Sha -t 100000 {} +
即使问题涉及尚未提交的文件,让我建议一个解决方案,列出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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.