我的小型数据库开发团队和我在6个月前开始使用Git进行版本控制。我们现在有1个开发实例和1个生产实例。
当我为团队设置Git时,我创建了“MASTER”分支,然后将生产实例上安装的所有内容放入文件夹中。然后我创建了一个“DEV”分支,并将开发实例上安装的东西放入文件夹中(如果有重复项,则覆盖旧文件)。
然后我们继续在“DEV”分支上进行所有开发,然后当想要从开发实例安装生产时,我从“MASTER”分支中选择“DEV”提交。然后它要求我手动合并,因为存在合并冲突...
我需要做什么才能让我们更轻松地从开发到生产安装,而不必每次都进行樱桃挑选?或者我们是否需要在未来启动另一个存储库?
这是我正在寻找的一个例子。
我在DEV分支中对这些文件进行了更改:
file1
file2
file3
file4
file5
...
在DEV分支中添加了这些文件:
file 80
file 81
但我想只将这些文件合并到MASTER分支中:
file2
file4
file80
每个文件都是PL / SQL触发器或函数或过程。
答案 0 :(得分:2)
你严重误用了Git的分支模式。
使用分支维护单独的不同文件副本,例如将特定于环境的文件放在特定于环境的分支上,意味着您放弃了将这些分支重新合并的能力,这意味着你放弃了让Git最有用的东西。
您应该停止维护特定于分支的文件,而不是:
将所有特定于环境的配置移出存储库
将没有实际数据的空配置文件放入存储库。在部署应用程序的每个环境中使用实际配置数据填充这些空文件。在这种情况下,您的配置数据不受版本控制;这是敏感数据(如API密钥)的正确方法。
在同一分支上维护所有特定于环境的配置文件
如果要对配置文件进行版本控制,则应为每个配置文件使用唯一的名称,这些名称特定于它们所适用的环境。例如,config.ini.production
和config.ini.development
。然后,在每个已部署的环境中,将符号链接config.ini
添加到正确的特定于环境的文件中。
完成此操作后,您就可以将<{1}}分支合并到您的dev
分支中,因为Git可以正常工作。
答案 1 :(得分:0)
我从未使用樱桃选择将工作从一个分支转移到另一个分支,除非意图完全放弃原始作品的分支。
您似乎只是希望合并您的更改,因此您应该......执行此操作 - git checkout master && git merge development
。您可能会遇到合并冲突,因为从该分支机构中挑选出来的提交将与其对应部分发生冲突。
澄清最后一点,如果您的开发分支上有提交A,并且A&#39;在您的主分支上,A&#39; = A由于樱桃选择,那么A&#39;之后就会发生冲突。是没有历史的。