Git 安全地将密码提交到从未被推送的分支?

Git 安全地将密码提交到从未被推送的分支?,git,version-control,branch,sensitive-data,Git,Version Control,Branch,Sensitive Data,如果我有两个分支,master&secret。我将敏感数据提交到secret,但从不推送secret,仅推送主文件,以公开回购。如果我从不在它们之间进行合并,只重新设置secret,我的敏感数据是否有可能以某种方式最终进入远程存储库索引 用例:我将所有机器的~/.config目录保存在公共Git存储库中。然而,有些程序需要密码,不能使用环境变量。我的想法是为每台机器的敏感数据保留不同的分支,并使用git钩子拒绝敏感数据进入分支master,并禁止公开推送机器分支。但我担心,你必须非常小心,确保你

如果我有两个分支,
master
&
secret
。我将敏感数据提交到
secret
,但从不推送
secret
仅推送
主文件
,以公开回购。如果我从不在它们之间进行合并,只重新设置
secret
,我的敏感数据是否有可能以某种方式最终进入远程存储库索引


用例:我将所有机器的
~/.config
目录保存在公共Git存储库中。然而,有些程序需要密码,不能使用环境变量。我的想法是为每台机器的敏感数据保留不同的分支,并使用git钩子拒绝敏感数据进入分支
master
,并禁止公开推送机器分支。但我担心,你必须非常小心,确保你的秘密不会被推送到远程存储库。例如,如果您从
secret
合并到
master
或意外地推送
secret
,则它们会退出。有关使用钩子实现策略的详细信息,请参见,但钩子也可能无法达到预期目的


虽然,是的,从技术上讲,在您自己的本地git存储库中可以隐藏机密数据,但我建议将敏感数据完全排除在存储库之外,而不是将它们放在配置文件或源文件中,可能会排除在
中。gitignore
取决于它们各自的位置。

这样会比较安全,但是为什么要提交它呢?要么忽略它,要么使用env variablesThanks。我用gitattributes filter clean/smudge找到了更好的解决方案。你可以看到