[英]How to exclude a particular commit from git merge (forever)
我正在开发一些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是一个孩子,我将child合并为parent)。
发生了什么: Git只是将凭证从dev复制到master,没有问我这个问题。 所以现在我的主分支被凭证“污染”,我不能再把它推到github了。
我的问题是:
如果有任何不清楚的地方,请告诉我,任何帮助将不胜感激。
如果主分支中的文件在原始分支后更改为dev,则Git将仅标记冲突,然后在dev中更改相同的文件。
我建议你为你的凭证添加一个.gitignore条目,或者使用ENVIRONMENT变量将它们分开,在codeigniter中这很容易,你所要做的只是你的apache配置(vhost,如果你使用它们)是添加SetEnv APPLICATION_ENV development
然后你可以在application/configs
添加一个名为development
的文件夹,现在当你在开发环境中运行时,这些配置将优先于基本配置目录中的配置。
这不是关于gitignoring文件,删除提交,而是良好的文件结构和环境设置,以区分不同的环境,使用development
, staging
和production
(这是默认设置)
否则添加.gitignore行告诉git忽略那些特定文件。
Git ingore会有所帮助。 阅读此博客文章了解解决方案。
http://blog.pagebakers.nl/2009/01/29/git-ignoring-changes-in-tracked-files/
您可以包含配置文件中的凭据,并将该文件添加到.gitignore
。
配置文件可以包含开发,预生产和生产环境的设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.