如何从此 Git 设置中恢复

How to recover from this Git setup

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

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

然后我们继续在 "DEV" 分支上进行所有开发,然后当想要从开发实例在生产环境中安装东西时,我从 [=32= 中挑选了一个 "DEV" 提交] 分支。然后它要求我手动合并,因为存在合并冲突...

我需要做什么才能更轻松地从开发安装到生产,而不必每次都进行挑选?还是我们以后需要启动另一个存储库?

这是我正在寻找的示例。

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

file1
file2
file3
file4
file5
...

在 DEV 分支中添加了这些文件:

file 80
file 81

但我只想将这些文件合并到 MASTER 分支中:

file2
file4
file80

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

我从来没有使用 cherry-pick 将工作从一个分支转移到另一个分支,除非意图是 完全放弃 工作最初所在的分支。

您似乎只是想合并您的更改,所以您应该...这样做 - git checkout master && git merge development。您可能 运行 陷入合并冲突,因为该分支的 cherry-picked 提交将与其对应的提交发生冲突。

为了澄清最后一点,如果你在你的开发分支上有一个提交 A,在你的主分支上有一个提交,A' = A 由于 cherry-pick,那么就会有冲突因为 A' 是在没有历史记录的情况下引入的。

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

使用分支维护单独的不同个文件副本,例如将environment-specific个文件放在environment-specific个分支上,意味着你放弃了这个能力将这些分支重新合并在一起,这意味着您将放弃使 Git 最有用的东西。

您应该停止维护 branch-specific 个文件,而是:

  1. 将所有 environment-specific 配置移出存储库

    将没有实际数据的空配置文件放入您的存储库中。在您部署应用程序的每个环境中使用真实配置数据填充这些空文件。在这种情况下,您的配置数据不是version-controlled;这是敏感数据的正确方法,例如 API 键。

  2. 在同一个分支上维护所有environment-specific配置文件

    如果你想对你的配置文件进行版本控制,你应该为每个配置文件使用唯一的名称,特定于它们所应用的环境。例如,config.ini.productionconfig.ini.development。然后,在每个已部署环境中,符号链接 config.ini 到正确的 environment-specific 文件。

完成此操作后,您可以简单地合并您的 dev 分支到您的 master 分支,因为 Git 是预期的上班。