Git 将密码提交到一个永远不会被推送的分支是安全的吗?
Safe to Git commit passwords to a branch that never gets pushed?
如果我有两个分支,master
& secret
。我将敏感数据提交到 secret
,但是 never push secret
,only 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
中,具体取决于它们各自的位置。
如果我有两个分支,master
& secret
。我将敏感数据提交到 secret
,但是 never push secret
,only 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
中,具体取决于它们各自的位置。