管理少数客户的应用程序

时间:2016-12-07 12:52:51

标签: git branch maintenance clients

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

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

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

现在每个客户都在不同的分支机构,我知道这是不好的选择。

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

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

1 个答案:

答案 0 :(得分:0)

在密封基础之前,您可能不应该将应用程序分支到5个不同的分支。但如果他们没有分歧太多,你有三种可能性:

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

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

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

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

    请注意,如果你做了一些与你想要更新的内容相冲突的更彻底的改变,那么这三种方式将以不同的方式失败,并且做好准备是好的。

    1. 在默认设置下会立即拒绝补丁,不做任何更改。您需要进一步调查它不适用的原因,或使用相对安全的--reject(尽管请先阅读手册)。

    2. 将使用<<<<<<< ======= >>>>>>>装饰失败点,就像失败的git merge一样,您需要解决冲突并重新提交,或中止操作(它会告诉您使用哪些命令)。

    3. 会产生一些看起来很糟糕的冲突消息,你可能会在路上更新几个提交。同样,git会尝试对如何继续提供帮助。

    4. 如果出现问题,您始终可以git reset --hardgit cherry-pick --abortgit rebase --abort来帮助您。如果您觉得使用它们感觉不太舒服,您也可以在对其进行更改(git branch backup)之前复制每个分支的当前状态,并按git reset --hard backup取回所有分支。