Git 如何加密文件并将其存储在LFS上?

Git 如何加密文件并将其存储在LFS上?,git,encryption,git-lfs,git-filter,git-crypt,Git,Encryption,Git Lfs,Git Filter,Git Crypt,我知道如何通过git crypt对存储库中的文件进行加密: echo "*.crypt.* filter=git-crypt diff=git-crypt" > .gitattributes echo "supersecret info" > somethingTo.crypt.txt git add .gitattributes somethingTo.crypt.txt git crypt status # somethingTo.cr

我知道如何通过git crypt对存储库中的文件进行加密:

echo "*.crypt.* filter=git-crypt diff=git-crypt" > .gitattributes
echo "supersecret info" > somethingTo.crypt.txt
git add .gitattributes somethingTo.crypt.txt
git crypt status   # somethingTo.crypt.txt results encrypted
git commit
git push
我知道如何使用git lfs存储文件(在自托管GitLab上;在项目设置中启用lfs):

。。。但是,如何在同一个文件中同时使用它们呢?


即使
.gittributes
用于存储在LFS上的筛选器之前有用于加密的git筛选器,文件也不会被加密(
git crypt status | grep somethingTo
报告“未加密”)。LFS未跟踪的所有其他
*.crypt.*
文件都将正确加密

我想问题在于我的
somethingTo.crypt.txt
现在只是存储库中的一个引用对象,而不是实际的(加密的)文件。但是我希望(多亏了
git filter
s),文件在被推送到LFS存储之前会被过滤/加密



两个过滤器扩展是否相互兼容?如何使它们协同工作?

您可以自己编写过滤器。你必须制作自己的组合过滤器(以及那些mods安装的任何其他属性),以达到你想要的效果,git不知道如何让第三方钩子相互配合

即使
.gittributes
在用于存储在LFS上的过滤器之前有用于加密的git过滤器,文件也不会被加密

这是因为属性不会累积,它们会覆盖。每个属性都有一个值,即上次匹配中指定的值。如果您想要一个组合了两个第三方工具效果的过滤器,那么您必须编写一个组合了这两个第三方工具效果的过滤器

git lfs track somethingTo.crypt.txt
git add .gitattributes    # updated LFS rule for tracked file
git commit
git push