2016-12-07 46 views
0

我使用git来开发和维护我的应用程序。为少数客户管理应用程序

我有一个问题,因为我的应用程序使用,以5个客户和他们每个人都有自己的配置,如标识,一些特殊的功能,CONFIGS等等

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

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

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

我知道这是非常薄弱的​​,但如何正确地做到这一点?

回答

0

在密封底座之前,您可能不应该将应用程序分支到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

相关问题