如何从这个Git设置中恢复

时间:2016-01-04 02:39:14

标签: git branching-and-merging cherry-pick git-cherry-pick

我的小型数据库开发团队和我在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触发器或函数或过程。

2 个答案:

答案 0 :(得分:2)

你严重误用了Git的分支模式。

使用分支维护单独的不同文件副本,例如将特定于环境的文件放在特定于环境的分支上,意味着您放弃了将这些分支重新合并的能力,这意味着你放弃了让Git最有用的东西。

您应该停止维护特定于分支的文件,而不是:

  1. 将所有特定于环境的配置移出存储库

    将没有实际数据的空配置文件放入存储库。在部署应用程序的每个环境中使用实际配置数据填充这些空文件。在这种情况下,您的配置数据不受版本控制;这是敏感数据(如API密钥)的正确方法。

  2. 在同一分支上维护所有特定于环境的配置文件

    如果要对配置文件进行版本控制,则应为每个配置文件使用唯一的名称,这些名称特定于它们所适用的环境。例如,config.ini.productionconfig.ini.development。然后,在每个已部署的环境中,将符号链接config.ini添加到正确的特定于环境的文件中。

  3. 完成此操作后,您就可以将<{1}}分支合并到您的dev分支中,因为Git可以正常工作。

答案 1 :(得分:0)

我从未使用樱桃选择将工作从一个分支转移到另一个分支,除非意图完全放弃原始作品的分支。

您似乎只是希望合并您的更改,因此您应该......执行此操作 - git checkout master && git merge development。您可能会遇到合并冲突,因为从该分支机构中挑选出来的提交将与其对应部分发生冲突。

澄清最后一点,如果您的开发分支上有提交A,并且A&#39;在您的主分支上,A&#39; = A由于樱桃选择,那么A&#39;之后就会发生冲突。是没有历史的。