git无法识别我的gitignore文件中的条目

时间:2018-10-11 19:48:52

标签: git

我按照找到的here的指示进行操作,但最终仍然得到了相同的少数文件。即使我专门调用git -rm --cached those/files*,当我调用git status时,我仍会在“未跟踪的文件:”下看到这些相同的文件:

这是我的gitignore文件的样子:

# Files that exceed 100MB #
###########################
./data/9-26-18/altrans/SkinSunExposedLowerleg.Altrans.bestPerLink
./data/9-26-18/altrans/MuscleSkeletal.Altrans.bestPerLink
./data/9-26-18/altrans/Thyroid.Altrans.bestPerLink
./data/9-26-18/altrans/WholeBlood.Altrans.bestPerLink
./data/9-26-18/altrans/NerveTibial.Altrans.bestPerLink
./data/9-26-18/altrans/HeartLeftVentricle.Altrans.bestPerLink
./data/9-26-18/altrans/Lung.Altrans.bestPerLink
./data/9-26-18/altrans/AdiposeSubcutaneous.Altrans.bestPerLink
./data/9-26-18/altrans/ArteryTibial.Altrans.bestPerLink

如何使这些文件以及我以后输入到.gitignore中的任何其他文件(将来超过100MB)都不会被跟踪,而被完全忽略?

2 个答案:

答案 0 :(得分:1)

该死,我想我刚刚意识到了这个问题:由于某种原因,gitignore不会在带有点号的文件中使用。因此,显然,我必须删除这些点才能使gitignore正常工作。如果有人可以告诉我原因,将不胜感激。

答案 1 :(得分:1)

没有内置的“按大小忽略”。您可以编写一个程序来检查文件,对于超过一定大小阈值的文件,可以更新.gitignore。查找“大文件”的非常简单的Shell脚本版本是:

find . -name .git -prune -o -size +100M -print | cut -c3-

({cut -c3-丢弃此./打印的前导find)。

您可以通过git check-ignore来运行这些名称,以查看它们是否已被忽略;如果没有,请将它们添加到.gitignore

[find expression as above] |
while read -r name; do
     git check-ignore -q "$name" || printf '%s\n' $name >> .gitignore
done

请注意,这假设.gitignore文件本身不会增长得太大而不会引起问题。如果可以,即使.gitignore超过了您的大小阈值,也要确保将.gitignore删除为忽略文件,例如:

find . -name .git -prune -o -name .gitignore -prune -o -size +$limit -print

其中$limit是大小阈值(100 MB为100M,10k为10k,依此类推)。