如何从git repo中的“特定于客户端”的代码中提取“通用”代码?

时间:2016-09-18 19:26:08

标签: git

我开发了一个专门为特定客户设计的管理面板。现在,项目要求要求非特定于客户的代码应该被提取为单独的git分支,以作为项目的新客户特定变体的基础。

TL; DR

正如我已经提到的,我的目标是:

  1. 从我现有项目中提取客户端特定代码作为独立分支。
  2. 将来将所有“通用”功能/错误修正提交给通用分支。
  3. 合并从通用分支到客户特定分支的更改。
  4. 一旦我提取特定于客户端的代码,从该分支中​​删除所有特定于客户端的功能,应用一些新的提交并尝试将其合并到前一个分支(客户端特定的一个),就会出现问题:

    enter image description here

    如您所见,问题在于,generic-branch将不需要的更改(如提交“1”)应用于client-branch

    所以问题是:将来从现有存储库中提取通用功能以便将来分支不同的客户端特定分支的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

从中提取非客户端特定代码并从中创建提交(commit-1)后,您需要将此提交合并回客户端特定分支。由于此合并不应更改客户端特定分支的内容,因此应使用ours合并策略:

git checkout client-branch
git merge -s ours commit-1

此合并的有效结果是,将generic-branch合并到client-branch后,会将commit-1视为合并基础。

答案 1 :(得分:0)

你需要挑选提交2,而不是将泛型分支合并到客户端分支:

git checkout client-branch

git cherry-pick <commit-2>