Git和克隆
问题描述:
我为一个名为'A'的客户做了一个应用程序(不是真的)。Git和克隆
我发现它非常酷,我想卖给其他客户。目录'A'是一个Git仓库。我想我克隆它有一个问题。据我所见,我需要复制'A'目录并将其命名为'Generic_A'。然后删除目录'A'并执行“git clone Generic_A A”然后,我可以开始使用通用设计更改'Generic_A'-repo,并删除所有客户端引用。但这是另一种方式。我应该开始进行通用设计,然后克隆回购以更改为客户特定设计。
我可以:
- 做出一个新的分支
- 做所有的变化,使设计通用
- 创建反映了两个
- 之间的变化补丁删除客户端专用分支
- 将目录重命名为'Generic_A'
- 将回购克隆到新的目录'A'
- 将修补程序应用于获取客户端特定内容
如果是 - 我如何制作修补程序并应用它?
问候,
雅各
答
可以工作,但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 /源前缀。
答
这里可能的工作流程:
- 在DIR:
- 创建一个新的分支 '通用',从分公司的 '客户A'。
- 在'Generic'分支上使用'git rebase -i'来删除所有客户A的东西。
- 使用'git rebase client-A generic'重新绑定您的客户端 - 通用分支。
- 重命名一个目录到通用目录
- 克隆你的通用目录到一个新的客户端-A DIR
- 删除客户端-A从通用目录分支。
这样,您将保留client-A分支的历史记录。
非常感谢您的回复。你为什么要创建'client_A'分支?为什么不直接在主分支上应用补丁?毕竟是通用的克隆。 – jriff 2010-05-04 06:32:10
顺便说一句 - 我知道失去历史,但我可以忍受这种情况。 – jriff 2010-05-04 06:37:43
@jriff:一个''client_A'分支允许你独立地离开主分支,随时准备由你的'Generic_A'主分支进行更新,当你做出下一个'git pull' – VonC 2010-05-04 06:54:43