如何在 Git 仓库中隐藏一行代码?

3
我有一些GitHub仓库,其中包含与Mongo和Firebase等在线数据库的连接字符串。
我已经看到了一些解决方案,但我想知道是否有办法隐藏特定文件中的一行代码,以便他人无法看到敏感数据,并且我不会冒失丢失这些数据。
注意:我不能删除整个文件,因为它有一些重要的配置项。 我只想让“某些代码行变得不可见”对别人而言。这是可能的吗?

这个回答解决了你的问题吗?git commit 配置在初始提交时但从未再次提交? - phd
https://stackoverflow.com/search?q=%5Bgit%5D+application+config - phd
4个回答

4
不,不可能的,而且你绝不能将凭据和其他机密数据放入GitHub明文中。有很多机器人在扫描GIT并从那里收集密码。
这是不可能的,因为即使你某种方式能够做到这一点,某个人仍然可以 fork/clone你的存储库,并能够再次在他们的磁盘上看到这些数据。
您应该考虑切换到一个不同的方法来提供凭据给您的应用程序,如secrets或至少是环境变量。
但通常对于所问的问题答案是否定的,因为这不是Git的工作方式。

是的,我一年前应该考虑到这个问题。现在我有一些旧的代码库有很多提交记录。一个一个地编辑它们并移除敏感数据将非常困难。谢谢! - Luiz Augusto Ventura
我的建议是在找到解决方案之前将存储库设为私有,否则,如果您在那里拥有数据库连接的详细信息,它很容易被黑客攻击。 - Dominik Wosiński

2

我认为常见的做法是使用环境变量来配置连接。这样,您可以在存储库中共享示例.env配置文件,并将密码等信息保留给自己。

如何在应用程序中使用环境变量? 这取决于您使用的技术和环境,因此很难在这里给出一个确定的答案。


谢谢,我会去查看的。 - Luiz Augusto Ventura

1
在重复了上面的“不要将秘密数据与公开数据混在同一数据集中”的答案后,我要补充说,Git确实允许对进出仓库的数据使用"smudge" and "clean" filters,这里有一个相关问题here。有时你会被困在代码中,而该代码仍然认为“不显眼地藏起来”就足以保证安全性,因此你必须像这样进行翻转。

0
人们通常做的是在项目中包含一个示例文件,并设置.gitignore以忽略真实文件,以便它们不会被包含在项目中。
因此,可以创建一个名为config.properties.sample的文件,其中包含默认值,让应用程序读取config.properties并使用一行代码设置.gitignore,该行代码说config.properties。新开发人员坐下来,克隆,从示例中创建真实文件并调整值,每个人都将永远快乐。

是的,这是我现在会使用的解决方案,但是一年前我没有想到哈哈。谢谢! - Luiz Augusto Ventura
如果需要,您可以随时重写分支的历史记录。 - eftshift0
是的,我使用了bfg repo-cleaner完成了这个任务。我可以在我的历史记录中重写敏感代码行,也可以完全删除包含敏感数据的文件或文件夹。 - Luiz Augusto Ventura

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接