虽然我用git已经有一段时间了,但我仍然认为自己是n00b,所以请不要对我太苛刻。
我正在维护一个“公司”大型机系统作为两个不同的副本。我们称它们为测试和生产。大型机没有任何我(或者可能是你们中的任何人)会认为是版本控制系统的东西,所以我在桌面上使用 git 来为我提供版本控制。以下是我当前工作流程的主要特点:
桌面和大型机与 FTP “同步”。最后,所有的开发工作,无论是写在大型机上还是 PC 上,最终都在 PC 上的一个 git 分支中结束。
我无法使用任何类型的“现代”部署技术,例如 Hudson
我有两个主要分支,分别称为 Test 和 Prod。由于产品的(继承)结构,Test 和 Prod 实例之间的代码存在许多差异。例如,所有的显示面板都需要清楚地识别这是 Test 还是 Prod,但是没有办法在一个点上进行配置。
我通常为特定的开发子项目创建其他临时分支。
一般开发是在测试分支上完成的,有多个提交。准备就绪后,这些内容会被挑选到 Prod 上,并标有更改编号,并在获得批准后上传。
幸运的是,紧急工作很少在 Prod 分支上完成,并被挑选到 Test 上。
有时,挑选樱桃需要手动合并。
我想改进这个工作流程。目前,我的存储库在两个分支上充满了并行相同的更改。
我想我更愿意这样做(对于测试->产品):
开发准备好后,在产品 HEAD 处创建一个新分支
将这组开发更改折叠为新分支上的单个更改
将这个新分支合并到 Prod。请记住,它们的共同祖先是在使 Test 与 Prod 不同的更改之前
看起来这git rebase -i
可能会完成这项工作,但我必须承认那git rebase
是我的脑桥,不知何故,我已经多次搞砸了我的树。
所以我的问题是:
请在产品的限制范围内提出更好的方法。
如果我的首选方法可行,有人可以建议正确的参数
git rebase -i
吗?