我正在使用 git 开发和维护我的应用程序。
我有一个问题,因为我的应用程序正在使用 5 个客户端,每个客户端都有自己的配置,如徽标、一些特殊功能、配置等......
现在我编写了新组件,需要将此组件添加到每个客户端实例,我不知道如何正确执行。
现在每个客户都在不同的分支上,我知道这是一个糟糕的选择。
如果我需要更新应用程序,我需要将代码复制并粘贴到每个客户端并将其推送到存储库。
我知道它很弱但是如何正确地做到这一点?
我正在使用 git 开发和维护我的应用程序。
我有一个问题,因为我的应用程序正在使用 5 个客户端,每个客户端都有自己的配置,如徽标、一些特殊功能、配置等......
现在我编写了新组件,需要将此组件添加到每个客户端实例,我不知道如何正确执行。
现在每个客户都在不同的分支上,我知道这是一个糟糕的选择。
如果我需要更新应用程序,我需要将代码复制并粘贴到每个客户端并将其推送到存储库。
我知道它很弱但是如何正确地做到这一点?
在密封基础之前,您可能不应该将应用程序分支到 5 个不同的分支。但是,如果它们没有偏离太远,那么您有三种可能性:
应用您的更改,创建补丁git diff > patch
(git apply patch
从 fork 一个新分支master
,在那里应用更改,git cherry-pick
在每个分支中提交和提交(与 1 效果相同),然后删除那个额外的分支,
将更改应用到master
您git rebase
的分支上。这样做的好处是编辑将是所有五个共同的单个提交。有关变基的实用介绍,请参见此处。
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
.