【发布时间】:2014-04-19 17:42:57
【问题描述】:
我正在开发一些网络应用程序(php、codeigniter)。今天推送到github的时间到了,但是遇到了一个我处理不了的问题。
我有 2 个分支:
- master - 这个分支应该用于github推送,不包含凭据或任何其他敏感数据(只是公共代码)
- dev - 这是主人的孩子,用于开发,确实包含凭据(我的私有应用程序实例)
我的凭据是指:数据库登录名、密码、主机、用户; oauth 服务 ID/秘密;加密密钥。凭据存储在 /application/config 文件夹中的 2 个单独文件中。
我的想法是我将在 dev 上进行所有更改,而不是将 dev 合并到 master,并将 master 内容拉到 github(但 master 不能包含我的私人凭据)。
这是我到目前为止所做的:
- 从 /application/config/config.php 和 /applications/config/database.php 中删除了所有凭据(因为我不希望它们在 github 上公开)它们变成了一个空字符串,例如: $db['default']['hostname'] = '';
- 已启动 git 存储库并进行了初始提交 - 创建的默认分支名为“master”
- 将master拉入github
到目前为止,它非常酷 - 我在 github 上获得了我的项目代码,其中没有凭据。接下来我需要对我的项目进行一些更改,所以我:
- 创建了新分支“dev”
- 将我的凭据存储到 dev 中,并进行提交 - 我需要 dev 实例来获得凭据,因为我每次更改代码中的某些内容时都将其上传到 ftp 服务器(我不使用本地 LAMP 或类似的东西在这个项目中)
所以现在我需要在 dev 中进行一些更改,上传并拉到 github,所以我:
- 对开发进行更改(比如说添加新功能)
- 结帐给大师
- 将 dev 合并到 master。
我预期会发生什么: Git 会问我应该在“master”中使用哪个版本的配置,因为它在两个分支中是不同的。我将使用 diff 来选择文件的“主”版本(不包含凭据)。 Git 会记住我的选择,以后我将 dev 合并到 master 时就不用再选择了。 Git 在我的其他一个项目中就是这样工作的,其中 dev 是一个主分支,实例是它的子分支(在这种情况下,dev 是一个子分支,我将子分支合并到父分支中)。
发生了什么: Git 只是将凭证从 dev 复制到 master,并没有问我这个问题。所以现在我的主分支被凭据“污染”了,我不能再把它推送到 github。
我的问题是:
- 为什么会发生这种情况,我该如何避免这种情况?
- 还有其他(更好的)方法来处理此类问题。
如果有任何不清楚的地方请告诉我,我们将不胜感激。
【问题讨论】:
标签: php git codeigniter github