我正在使用git来开发和维护我的应用程序。
我有一个问题,因为我的应用程序正在使用5个客户端,每个客户端都有自己的配置,如徽标,一些特殊功能,配置等......
现在我编写了新组件,需要将此组件添加到每个客户端实例,我不知道如何正确地执行此操作。
现在每个客户都在不同的分支机构,我知道这是不好的选择。
如果我需要更新应用程序,我需要将代码复制并粘贴到每个客户端并将其推送到repo。
我知道它很弱但是如何正确地做到这一点?
答案 0 :(得分:0)
在密封基础之前,您可能不应该将应用程序分支到5个不同的分支。但如果他们没有分歧太多,你有三种可能性:
应用您的更改,创建补丁(git diff > patch
),重置(以便您可以查看)并将其应用于您的五个分支(git apply patch
)的头部,
从master
派生一个新分支,在那里应用更改,在每个分支中提交和git cherry-pick
提交(与1相同的效果),然后删除该额外分支,
将更改应用于master
,然后将git rebase
分支应用到您的分支之上。这样做的好处是编辑将是所有五个共同的单个提交。 See here用于实际引入变基。
1和2将新提交的独立副本放在五个分支历史的顶部。 3尝试在分叉之前挤压新的提交。后者的副作用是必须重新重新构建该日期的所有提交,因为无法修改现有提交的父级。必须强制在3之后每个分支到存储库的第一次推送。详细信息均在链接文档中进行了讨论。
请注意,如果你做了一些与你想要更新的内容相冲突的更彻底的改变,那么这三种方式将以不同的方式失败,并且做好准备是好的。
在默认设置下会立即拒绝补丁,不做任何更改。您需要进一步调查它不适用的原因,或使用相对安全的--reject
(尽管请先阅读手册)。
将使用<<<<<<<
=======
>>>>>>>
装饰失败点,就像失败的git merge
一样,您需要解决冲突并重新提交,或中止操作(它会告诉您使用哪些命令)。
会产生一些看起来很糟糕的冲突消息,你可能会在路上更新几个提交。同样,git
会尝试对如何继续提供帮助。
如果出现问题,您始终可以git reset --hard
,git cherry-pick --abort
和git rebase --abort
来帮助您。如果您觉得使用它们感觉不太舒服,您也可以在对其进行更改(git branch backup
)之前复制每个分支的当前状态,并按git reset --hard backup
取回所有分支。