我试图将所有(数据)文件包含在 LFS 中,除非它们具有
.(r|R)
或 .(cpp|CPP)
扩展名,但不知何故,这两个扩展名也最终出现在 LFS 中,并且我无法将它们从中删除。这是我到目前为止尝试过的:
/**/data/** filter=lfs diff=lfs merge=lfs -text
/**/data/**.[rR] -filter=lfs -diff=lfs -merge=lfs text
/**/data/**.[cC][pP][pP] -filter=lfs -diff=lfs -merge=lfs text
和
/**/data/** filter=lfs diff=lfs merge=lfs -text
/**/data/**.[rR] !filter !diff !merge text
/**/data/**.[cC][pP][pP] !filter !diff !merge text
之后我会:
find user-*/data -name "*.R" -print0 | xargs -0 -i echo git lfs untrack "'{}'" | bash
find user-*/data -name "*.R" -print0 | xargs -0 -i echo git rm --cached "'{}'" | bash
find user-*/data -name "*.R" -print0 | xargs -0 -i echo git add "'{}'" | bash
我做错了什么?
git check-attr -a
对于我想从 LFS 中排除的文件之一,如下所示:
# git check-attr -a 'user-004/data/get-data.R'
user-004/data/get-data.R: diff: unset
user-004/data/get-data.R: merge: unset
user-004/data/get-data.R: text: set
user-004/data/get-data.R: filter: unset
如果我理解正确的话那很好,但是该文件仍然位于 LFS 中,我不知道如何将其移至常规版本控制。
问题可能是 Git LFS 已跟踪的文件不会仅通过更新 .gitattributes 来更改。
git rm --cached path/to/your/files
git add path/to/your/files
这与此处应用的逻辑相同:更改 .gitattributes 后文件仍然(不在)GIT LFS 中