繁体   English   中英

列出Git LFS未跟踪的文件

[英]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 --cachedgit commit --amend ),如果你注意到一个潜入的文件......

在预提交阶段,通过观察未跟踪文件列表并连续使用git lfs trackgit 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM