如何对Rails 5.2加密凭证执行git diff查看明文差异?
查看加密credentials.yml.enc的明文Git差异方法
我之前也被这个问题困扰过——加密后的文件diff全是乱码一样的内容,完全看不出实际改了什么。后来摸索出两个实用的办法,分享给你:
临时对比(无需配置)
如果只是偶尔需要查看差异,不用改任何Git配置,直接用管道命令组合实现:
- 查看单个历史版本的明文内容:
git show <commit哈希>:config/credentials.yml.enc | rails credentials:show - 对比两个版本的明文差异:
这个方法的好处是零配置,用完即走,适合临时需求。diff <(git show <旧commit哈希>:config/credentials.yml.enc | rails credentials:show) <(git show <新commit哈希>:config/credentials.yml.enc | rails credentials:show)
永久配置Git自动显示明文diff
如果经常需要查看这个文件的差异,建议配置Git的自定义diff驱动,以后直接git diff就能看到明文:
- 打开项目的
.git/config文件(或者全局的~/.gitconfig,看你想全局生效还是仅当前项目),添加以下内容:[diff "rails_credentials"] textconv = rails credentials:show cachetextconv = true - 在项目根目录创建或编辑
.gitattributes文件,添加规则让Git识别这个加密文件:
保存后,再运行config/credentials.yml.enc diff=rails_credentialsgit diff,就能直接看到config/credentials.yml.enc的明文差异了,非常方便。
注意事项
- 确保本地有正确的
config/master.key文件,或者已经设置好RAILS_MASTER_KEY环境变量,否则解密会失败。 - 如果是团队协作,
.gitattributes可以提交到仓库共享,而.git/config的配置需要每个成员自行添加(或者写个简单的脚本统一配置)。
内容的提问来源于stack exchange,提问作者tommarshall
相关产品推荐
相关产品推荐

