这个项目能做什么

git-crypt 是一个命令行工具,能够在 git 仓库内实现文件的透明加密和解密。指定受保护的文件在提交时自动加密,在检出时自动解密,使团队能够共享包含公开和私有内容混合的仓库,而无需锁定整个仓库。 主要特性包括: - 通过 git 过滤器实现透明加密和解密,因此用户在初始设置后可正常使用 git - 使用 AES-256 的 CTR 模式,并采用基于文件 SHA-1 HMAC 的合成 IV,在确定性选择明文攻击下提供语义安全性 - 基于 GPG 的密钥共享,支持多用户协作,通过 git-crypt add-gpg-user 添加公钥 - 对称密钥导出,无需 GPG 即可安全分发密钥 - 优雅降级,没有密钥的开发者仍可克隆和提交到仓库 配置通过 .gitattributes 文件完成,该文件指定哪些文件或模式应被加密。模式格式类似于 .gitignore,支持通配符和目录模式。.gitattributes 文件本身不得加密,且规则必须在添加敏感文件之前设置。 安全考虑:git-crypt 比其他使用固定 IV 的 ECB 或 CBC 模式的透明 git 加密系统更安全。然而,它不加密文件名、提交消息、符号链接目标或其他元数据。它不隐藏文件何时更改、文件长度或两个文件相同的事实。它也不支持撤销先前授予的加密仓库访问权限,因为这在历史数据背景下本质上是复杂的。 局限性包括:不适合加密仓库中的大部分或全部文件(更适合选择性加密少数敏感文件,如私钥或 API 凭据);加密文件不可压缩,因此即使微小更改也需要存储整个文件;并且可能无法与某些第三方 git GUI(如 Atlassian SourceTree 和 GitHub for Mac)可靠配合。使用 git-crypt 加密的文件无法通过 git-apply 打补丁,除非补丁本身已加密。 最新版本为 0.8.0,发布于 2025-09-23。该项目旨在无缺陷且可靠,但尚未完全成熟,在 1.0 版本之前可能引入不兼容的更改。