如何在不同的分支上保留不同的值(提交)?

问题描述 投票:1回答:4

我相信我所描述的情况非常普遍和基本,但我找不到灵魂。

我正在开发一个Web应用程序,我有它的git存储库。有一个应用程序的生产版本,我在主分支机构的代码和开放式开发的分支机构。

我想要实现的是:

  • 我希望在master分支和开发分支上有一些不同的值(如连接字符串)。
  • 我希望能够以一种我不担心上面提到的值的方式合并这些分支(当开发重新发布时)。因此,开发分支的连接字符串不会覆盖生产版本的连接字符串
  • 理想的解决方案还包括在创建新分支时更换连接(从PROD数据库到DEV)字符串。

我想出了一种方法,可以在开发分支上进行这些更改的提交,这些更改将标记为不包含在合并中,但我找不到方法来执行此操作。

我很感激任何建议。

git
4个回答
3
投票

我建议你创建一些git不跟踪的配置文件。您的代码可以读取此文件以初始化连接设置。由于文件不受版本控制,因此您可以轻松地针对不同的用例(包括生产与开发)进行修改。


2
投票

最简单的方法是:

  • 版本只是一个模板文件
  • 寻找回购之外的价值文件(特别是对于生产价值) 这样,就没有合并问题。

为此,您将在子模块仓库中注册(在.gitattributes declaration中)content filter driver

smudge(图片来自“Customizing Git - Git Attributes”,来自“Pro Git book”)

与模板文件关联的smudge脚本将通过在外部源中查看实际值来生成(自动在git chekcout上)属性文件。生成的实际属性文件仍然被忽略(由.gitignore)。

请参阅“git smudge/clean filter between branches”的完整示例。


1
投票

您可以忽略文件,您不希望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读取这些属性文件


0
投票

在对dev进行更改之前。分支,在进行更改之前检出该分支然后提交。

© www.soinside.com 2019 - 2024. All rights reserved.