在GitHub / BitBucket上开源项目的最佳途径,但不共享敏感文件?

时间:2013-08-22 22:18:35

标签: git github bitbucket

我想开源我在GitHub上完成的一些Web项目,但是有一些文件包含数据库密码以及我不希望明显包含的内容。

我可以git rm这些文件,或者将它们添加到我的.gitignore,但这会将它们从git和版本控制中一起删除,我不想这样做。

当我将更改推送到回购时,我怎么能这样做,只包含某些文件?

2 个答案:

答案 0 :(得分:3)

我通常建议人们使用"模板"在这种情况下的模式。

例如,您有一些application.settings文件,其中包含数据库密码,端口绑定等内容。将该文件复制到application.settings.template并删除所有特定于站点的信息,例如密码和端点,只留下您想要的默认设置。

然后,将application.settings添加到您的.gitignore。每当您引入新设置时,您都必须调整这两个文件,但这允许其他人通过查找*.template文件非常容易地查看必须配置的内容。他们只需要复制那些并移除.template扩展名,然后根据需要自定义它们。

这有一些优点:

  1. 如果有人在制作中git reset --hard愚蠢,部署的设置将不会被破坏,因为Git不会跟踪实际的设置文件。
  2. 由于本地配置更改,开发人员无法检出不同的分支(如果目标分支的设置文件与当前分支不同,通常必须git stash && git checkout other-branch && git stash pop,并且开发人员对设置文件进行了本地更改。)
  3. 由于忽略了实际的设置文件,很难意外地将其推送到远程存储库。
  4. 缺点是模板中的新/修改设置无法合并到已部署的设置文件中(但如果您正在制作中,您可能希望检查模板文件中的差异并手动应用这些设置无论如何)。拔出或签出新分支后,必须手动git diff HEAD HEAD@{1} -- application.settings.template查看设置模板中的更改内容。

答案 1 :(得分:0)

您可以使用私有托管的git子模块,并将其包含在主git repo中