我相信我所描述的情况非常普遍和基本,但我找不到灵魂。
我正在开发一个Web应用程序,我有它的git存储库。有一个应用程序的生产版本,我在主分支机构的代码和开放式开发的分支机构。
我想要实现的是:
我想出了一种方法,可以在开发分支上进行这些更改的提交,这些更改将标记为不包含在合并中,但我找不到方法来执行此操作。
我很感激任何建议。
我建议你创建一些git不跟踪的配置文件。您的代码可以读取此文件以初始化连接设置。由于文件不受版本控制,因此您可以轻松地针对不同的用例(包括生产与开发)进行修改。
最简单的方法是:
为此,您将在子模块仓库中注册(在.gitattributes
declaration中)content filter driver。
(图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)
与模板文件关联的smudge
脚本将通过在外部源中查看实际值来生成(自动在git chekcout
上)属性文件。生成的实际属性文件仍然被忽略(由.gitignore
)。
请参阅“git smudge/clean filter between branches”的完整示例。
您可以忽略文件,您不希望GIT使用.gitignore
进行跟踪,请在此处阅读更多相关信息https://help.github.com/articles/ignoring-files/。
但这不会解决您的问题,因为在您添加开发阶段特定文件后,您也无法将它们跟踪到您的开发分支。
它是你提到的非常常见的场景,通常我们为每个阶段创建一个不同的文件,即dev,qa,stage,prod,它保存特定于舞台的值。
例如:-
dev.properties :-
dev server details
qa.properties :-
qa server details
prod.properties :-
prod server details
然后你的代码,根据你选择的阶段,即dev,qa,prod读取这些属性文件
在对dev进行更改之前。分支,在进行更改之前检出该分支然后提交。