我按照找到的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)都不会被跟踪,而被完全忽略?
答案 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,依此类推)。