Git 按文件大小排序?

Git 按文件大小排序?,git,configuration,blob,gitignore,large-files,Git,Configuration,Blob,Gitignore,Large Files,我正在尝试实现Git来管理创造性资产(Photoshop、Illustrator、Maya等),我希望根据文件大小而不是扩展名、位置等从Git中排除文件 例如,我不想排除所有的.avi文件,但在随机目录中有少数+1GB的大型avi文件我不想提交 有什么建议吗?我是.gitignore的新手,所以可能有更好的方法可以做到这一点,但我一直使用以下方法按文件大小排除文件: find . -size +1G | cat >> .gitignore 显然,如果要生成大量大文件,则必须频繁运行

我正在尝试实现Git来管理创造性资产(Photoshop、Illustrator、Maya等),我希望根据文件大小而不是扩展名、位置等从Git中排除文件

例如,我不想排除所有的.avi文件,但在随机目录中有少数+1GB的大型avi文件我不想提交


有什么建议吗?

我是.gitignore的新手,所以可能有更好的方法可以做到这一点,但我一直使用以下方法按文件大小排除文件:

find . -size +1G | cat >> .gitignore

显然,如果要生成大量大文件,则必须频繁运行此代码。

我还想提供此代码的Windows版本

forfiles /s /c "cmd /q /c if @fsize GTR 1073741824 echo @relpath" >> .gitignore
(更新2020-05)

微软在很久以前发布了Git LFS作为开源。也许这就是大多数人真正想要的:

项目页面中的C&P:
Git大文件存储(LFS)将音频样本、视频、数据集和图形等大文件替换为Git中的文本指针,同时将文件内容存储在远程服务器(如GitHub.com或GitHub Enterprise)上

尽管文件大小非常大,并且以下内容不应成为问题,并且@abendine answer是正确的,根据:

那会好得多。再看看这个:结果是用上面的
*
替换
,避免在
.git
目录中查找内容。

以满足github的>.gitignore
我要警告大家,Git在处理大型二进制文件时性能很差,这个问题现在才慢慢得到解决。我建议不要将Git用于纯文本以外的内容。@erjiang:同意。(除了小的二进制文件是非常好的;当然,它们不能有很好的区别,但没有风投可以做到这一点)当然,OP是说他明确不想跟踪大文件,所以这一切可能都没问题!当然,没有内置的方法可以做到这一点。您可以通过添加一个pre-commit钩子来实现它,该钩子检查要提交的所有文件的大小,如果任何文件超过阈值,则中止。您可以添加额外的自动化,但要小心。您最不希望的是由于意外忽略重要内容而丢失数据。(为了增加危险,您可以:自动取消大文件的存储,自动将其添加到gitignore,甚至继续修改提交而不是中止。)最近有人谈论git ML扩展.gitignore语法,其中一个建议是允许.gitignore委托外部工具来决定什么是被忽略的,什么是不被忽略的。听起来这将是你想要的完美选择。不幸的是,这只是目前的一个建议,但最终可能会出现。控制这些文件有什么意义?当然,只需将它们保存在不同的名称下,甚至在名称中或不同的文本文件中添加一个小的描述,将更具成本效益和时间效益(对于较大的文件)。我看不出跟踪avi文件有什么好处。在部署WordPress内置的大型网站时,这是控制
wp内容/上传
文件夹的好方法。谢谢。我发现在gitignore正常工作之前,我需要从每个文件的开头删除前导的
/
。这是一个非常古老的线程,但万一有人偶然发现它,需要一个可复制的解决方案:
查找-大小+1G | sed's | ^\/| | g'| cat>.gitignore
为避免存储重复的文件名:
查找-尺寸+1G | sed's | ^\/| | g'| cat>.gitignore;啊!NF | | |!已看到[$0]+'.gitignore
sed
将消除拖尾
/
,而
awk
将通过检查一行中存在的字段数(
NF
)删除所有重复的行,忽略空行。如果您的
.gitignore
是以空行分隔的部分组织的,这将非常有用。您都将赢得“无用使用cat奖”是的,他们应该安装git lfs并跟踪大文件以自动将其从存储中排除。在windows中,运行相同的命令,它可能会将
/
添加到每个路径的开头,如下所示
/android/app/build/outputs/apk/debug/app universal debug.apk
。删除
/
,如下解决了我的问题<代码>android/app/build/outputs/apk/debug/app universal debug.apk
find * -size +1G | cat >> .gitignore