如何从这个Git设置中恢复

如何从这个Git设置中恢复,git,branching-and-merging,cherry-pick,git-cherry-pick,Git,Branching And Merging,Cherry Pick,Git Cherry Pick,我和我的数据库开发小组在6个月前开始使用Git进行版本控制。我们现在有一个开发实例和一个生产实例 当我为团队设置Git时,我创建了“MASTER”分支,然后将安装在生产实例上的所有内容放入文件夹中。然后我创建了一个“DEV”分支,并将安装在开发实例上的东西放入文件夹中(如果有重复的文件,则覆盖旧文件) 然后我们继续在“DEV”分支上进行所有的开发,然后当我们想从开发实例在生产上安装东西时,我会从“MASTER”分支中选择一个“DEV”提交。然后它要求我手动合并,因为存在合并冲突 我需要做些什么,

我和我的数据库开发小组在6个月前开始使用Git进行版本控制。我们现在有一个开发实例和一个生产实例

当我为团队设置Git时,我创建了“MASTER”分支,然后将安装在生产实例上的所有内容放入文件夹中。然后我创建了一个“DEV”分支,并将安装在开发实例上的东西放入文件夹中(如果有重复的文件,则覆盖旧文件)

然后我们继续在“DEV”分支上进行所有的开发,然后当我们想从开发实例在生产上安装东西时,我会从“MASTER”分支中选择一个“DEV”提交。然后它要求我手动合并,因为存在合并冲突

我需要做些什么,以便我们可以更轻松地从开发到生产安装,而不必每次都进行樱桃采摘?或者我们需要继续启动另一个存储库吗

这是我正在寻找的一个例子

我已在开发分支中对这些文件进行了更改:

file1
file2
file3
file4
file5
...
file 80
file 81
在开发分支中添加了以下文件:

file1
file2
file3
file4
file5
...
file 80
file 81
但我只想将这些文件合并到主分支中:

file2
file4
file80

每个文件都是一个PL/SQL触发器、函数或过程。

我从来没有使用过樱桃树来将工作从一个分支转移到另一个分支,除非目的是完全放弃最初工作所在的分支

看起来您只是想合并您的更改,所以您应该…这样做-
git checkout master&&git merge development
。您可能会遇到合并冲突,因为从该分支提取的提交将与其对应的提交冲突


为了澄清最后一点,如果在开发分支上有一个commit a,在主分支上有一个“commit”,并且由于一个cherry pick而有一个“=a”,那么这里会有冲突,因为“commit”是在没有历史记录的情况下引入的。

您严重误用了Git的分支模型

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

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

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

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

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

    如果要对配置文件进行版本控制,则应该为每个配置文件使用唯一的名称,具体到它们应用到的环境。例如,
    config.ini.production
    config.ini.development
    。然后,在每个部署的环境中,将symlink
    config.ini
    链接到正确的环境特定文件

  • 一旦完成了这项工作,您就可以简单地将
    dev
    分支合并到
    master
    分支中,因为Git是要工作的