Git和克隆

时间:2010-05-04 05:54:55

标签: git

我为一个名为'A'的客户做了一个应用程序(不是真的)。​​

我发现它非常酷,而且我想把它卖给其他客户。目录“A”是Git存储库。我认为克隆它有问题。据我所知,我需要复制一个'A'目录并称之为'Generic_A'。然后删除目录'A'并执行“git clone Generic_A A”然后我可以开始使用通用设计更改'Generic_A'-repo并删除所有客户端引用。但这是另一种方式。我应该开始进行通用设计,然后克隆repo以更改为客户端特定的设计。

我可以:

  1. 制作新分支
  2. 进行所有更改以使设计通用
  3. 创建一个反映两个
  4. 之间变化的补丁
  5. 删除客户特定分支
  6. 将目录重命名为“Generic_A”
  7. 将回购克隆克隆到新的目录'A'
  8. 应用补丁以获取客户特定的内容
  9. 如果是 - 我如何制作补丁并应用它?

    此致

    雅各

2 个答案:

答案 0 :(得分:1)

这是一个可能的工作流程:

  • 在一个目录上:
    • 从分支'client-A'创建一个新的分支'generic'。
    • 在'Generic'分支上使用'git rebase -i'删除所有客户端A内容。
    • 使用'git rebase client-A generic'来修改通用的客户端A分支。
  • 将您的A dir重命名为generic dir
  • 将您的通用目录克隆到新客户端-A dir
  • 从泛型目录中删除client-A分支。

这样,您将保留客户端A分支的历史记录。

答案 1 :(得分:0)

这可能有效,但在6到7之间。我会在应用你的补丁之前建立一个'client_A'分支 缺点是您丢失了客户端A的提交历史记录细节,因为您在一次大提交中应用了该补丁。

在您的情况下,可以使用git diff制作补丁,请参阅 patching with git diff

git diff --no-prefix > patchfile
  

然后应用补丁:

patch -p0 < patchfile
  

如果您的现有“git diff”修补程序文件是在没有“--no-prefix”选项的情况下创建的,则可以通过以下方式应用该修补程序:

patch -p1 < patchfile
  

这将忽略默认的a / b / source前缀。