【问题标题】:Managing application for few clients管理少数客户的应用程序
【发布时间】:2016-12-07 12:52:50
【问题描述】:

我正在使用 git 开发和维护我的应用程序。

我有一个问题,因为我的应用程序正在使用 5 个客户端,每个客户端都有自己的配置,例如徽标、一些特殊功能、配置等...

现在我编写了新组件,需要将此组件添加到每个客户端实例中,我不知道如何正确执行。

现在每个客户都在不同的分支上,我知道这是一个糟糕的选择。

如果我需要更新应用程序,我需要将代码复制并粘贴到每个客户端并将其推送到 repo。

我知道它很弱但是如何正确地做到这一点?

【问题讨论】:

    标签: git branch maintenance clients


    【解决方案1】:

    在密封基础之前,您可能不应该将应用程序分支到 5 个不同的分支。但是,如果它们没有偏离太远,那么您有三种可能性:

    1. 应用您的更改,创建补丁 (git diff > patch),重置(以便您可以签出)并将其应用到您的五个分支的头部 (git apply patch),

    2. master 分叉一个新分支,在那里应用更改,提交和git cherry-pick 在您的每个分支中提交(效果与1 相同),然后删除该额外分支,

    3. 将更改应用于master,然后将git rebase 应用到您的分支上。这样做的好处是编辑将是所有五个共同的单个提交。 See here 了解变基的实用介绍。

    1 和 2 将新提交的独立副本放在五个分支历史记录的顶部。 3 次尝试在他们分叉之前挤压一个新的提交。后者的副作用是,从该日期开始的所有提交都必须重新重建,因为无法修改现有提交的父级。必须强制在 3 之后每个分支第一次推送到存储库。详细信息均在链接文档中进行了讨论。

    请注意,如果您进行了一些与您想要更新的内容相冲突的更剧烈的更改,那么这三种方式将以不同的方式失败,最好做好准备。

    1. 在其默认设置中只会立即拒绝补丁,不做任何更改。您需要进一步调查它为什么不适用,或者使用相对安全的--reject(不过请先阅读手册)。

    2. 会用 <<<<<<< ======= >>>>>>> 装饰故障点,就像失败的 git merge 一样,您需要解决冲突并重新提交,或者中止操作(它给出你建议使用什么命令)。

    3. 会产生一些看起来很可怕的冲突消息,并且您可能会在途中更新多个提交。同样,git 会尽力为您提供帮助。

    如果出现问题,您总是有 git reset --hardgit cherry-pick --abortgit rebase --abort 来帮助您。如果您觉得使用它们不太舒服,您还可以在更改之前复制每个分支的当前状态 (git branch backup),然后通过 git reset --hard backup 收回所有内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-16
      • 2019-01-01
      相关资源
      最近更新 更多