Git 将密码提交到一个永远不会被推送的分支是安全的吗?

Safe to Git commit passwords to a branch that never gets pushed?

如果我有两个分支,master & secret。我将敏感数据提交到 secret,但是 never push secretonly push master to a public 回购。如果我从不在它们之间合并,仅变基 secret,我的敏感数据是否有 任何 机会以某种方式最终出现在远程存储库索引中?

用例: 我将所有机器的 ~/.config 目录保存在 public Git 存储库中。但是,有些程序需要密码并且无法使用环境变量。我的想法是为每台机器为敏感数据保留不同的分支,并使用 git 钩子拒绝敏感数据进入分支 master,并禁止推送机器分支 publicly。但是我很担心

您必须格外小心,以确保您的秘密位不会被推送到远程存储库。例如,如果您从 secret 合并到 master 或不小心推入 secret,它们就会退出。请参阅 How to disable git push when there are TODOs in code? 了解如何使用挂钩实施政策,但挂钩也可能无法达到预期目的。

尽管如此,是的,在您自己的本地 git 存储库中隐藏秘密位在技术上是可行的,但我建议将敏感数据完全留在存储库之外,而是将它们放在配置或源文件中,可能被排除在 .gitignore 中,具体取决于它们各自的位置。