我想开源我在GitHub上完成的一些Web项目,但是有一些文件包含数据库密码以及我不希望明显包含的内容。
我可以git rm
这些文件,或者将它们添加到我的.gitignore
,但这会将它们从git和版本控制中一起删除,我不想这样做。
当我将更改推送到回购时,我怎么能这样做,只包含某些文件?
答案 0 :(得分:3)
我通常建议人们使用"模板"在这种情况下的模式。
例如,您有一些application.settings
文件,其中包含数据库密码,端口绑定等内容。将该文件复制到application.settings.template
并删除所有特定于站点的信息,例如密码和端点,只留下您想要的默认设置。
然后,将application.settings
添加到您的.gitignore
。每当您引入新设置时,您都必须调整这两个文件,但这允许其他人通过查找*.template
文件非常容易地查看必须配置的内容。他们只需要复制那些并移除.template
扩展名,然后根据需要自定义它们。
这有一些优点:
git reset --hard
愚蠢,部署的设置将不会被破坏,因为Git不会跟踪实际的设置文件。git stash && git checkout other-branch && git stash pop
,并且开发人员对设置文件进行了本地更改。)缺点是模板中的新/修改设置无法合并到已部署的设置文件中(但如果您正在制作中,您可能希望检查模板文件中的差异并手动应用这些设置无论如何)。拔出或签出新分支后,必须手动git diff HEAD HEAD@{1} -- application.settings.template
查看设置模板中的更改内容。
答案 1 :(得分:0)
您可以使用私有托管的git子模块,并将其包含在主git repo中