我正在开发一些Web应用程序(php,codeigniter)。今天是把它推到github的时候了,但是我遇到了一个我无法管理的问题。
我有两个分支:
凭据我的意思是:数据库登录,密码,主机,用户; oauth服务id / secrets; encryption_key。凭据存储在/ application / config文件夹中的2个单独文件中。
我的想法是,我将在dev上进行所有更改,而不是将dev合并到master中,并将master内容拉到github(但master不能包含我的私有凭据)。
这就是我到目前为止所做的事情:
直到现在它还很酷 - 我的github上的项目代码没有凭据。接下来我需要在我的项目中进行一些更改,所以我:
所以现在我需要在dev中进行一些更改,上传它并拉到github,所以我:
我期望发生的事情: Git会问我在'master'中应该使用哪个版本的配置,因为它在两个分支中都是不同的。我将使用diff来选择文件的“主”版本(不包含凭证)。 Git会记住我的选择,将来我不会再选择当我将dev合并到master中时。 Git在我的其他项目中的工作方式如下,其中dev是一个主分支,instantions是它的子项(在这种情况下,dev是一个孩子,我将子项合并为父项)。
发生了什么: Git只是将凭证从dev复制到master,没有问我这个问题。所以现在我的主分支被凭证“污染”,我不能再把它推到github了。
我的问题是:
如果有任何不清楚的地方,请告诉我,我们将不胜感激。
答案 0 :(得分:0)
如果主分支中的文件在原始分支后更改为dev,则Git只会标记冲突,然后在dev中更改相同的文件。
我建议您为凭据添加一个.gitignore条目,或者使用ENVIRONMENT变量将它们分开,在codeigniter中这非常简单,您只需要在您的apache配置(vhost,如果您使用它们)上添加{ {1}}然后你可以在名为SetEnv APPLICATION_ENV development
的{{1}}内添加一个文件夹,现在当你在开发环境中运行时,这些配置将优先于基本配置目录中的配置。
这不是关于gitignoring文件,删除提交,而是良好的文件结构和环境设置以区分不同的环境,使用application/configs
,development
,和development
(默认值)
否则添加.gitignore行告诉git忽略那些特定文件。
答案 1 :(得分:0)
Git ingore会有所帮助。 阅读此博客文章了解解决方案。
http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/
答案 2 :(得分:0)
您可以包含配置文件中的凭据,并将该文件添加到.gitignore
。
配置文件可以包含开发,预生产和生产环境的设置。