虽然我已经使用Git有一段时间了,但我仍然认为自己是个新手,请不要对我太苛刻。
我正在维护一个“企业”主机系统,它有两个非相同的副本。我们称它们为Test和Production。该主机没有我(或者可能是你们中的任何人)认为的版本控制系统,因此我在桌面上使用Git来提供版本控制。以下是我当前工作流程的主要特点:
- 桌面和主机通过FTP“同步”。最终,所有开发工作,无论是在主机上编写还是在PC上编写,都会在Git分支中以PC的形式结束。 - 我没有任何现代部署技术的访问权限,例如Hudson。 - 我有两个主要的分支,称为Test和Prod。由于产品的(继承的)结构,测试和生产实例之间的代码存在一些差异。例如,所有显示面板都需要清楚地标识出这是Test还是Prod,但没有办法在单个点上配置此信息。 - 我通常为特定的开发子项目创建其他分支。 - 一般开发是在Test分支上完成的,具有多个提交。准备好后,这些提交会被挑选到Prod上,并在获得批准后上传并打上更改编号的标签。 - 紧急工作(幸运的是很少)在Prod分支上完成,并被挑选到Test上。 - 这种挑选有时需要手动合并。
我应该改进这个工作流程。目前我的存储库中充满了两个分支上相同的并行更改。
我认为我更喜欢这样做(对于Test -> Prod):
- 一旦开发准备好,就在Prod的HEAD处创建一个新分支。 - 将这组开发更改折叠成新分支上的单个更改。 - 将此新分支合并到Prod上。请记住,它们的共同祖先在使Test与Prod不同的更改之前。
看起来`git rebase -i`可能会完成这项工作,但我必须承认`git rebase`是我的难点,而且我已经多次搞砸了我的树。
因此,我的问题是:
1.请在产品的约束条件下提出更好的方法。
2.如果我的首选方法可行,请有人建议`git rebase -i`的正确参数?
我正在维护一个“企业”主机系统,它有两个非相同的副本。我们称它们为Test和Production。该主机没有我(或者可能是你们中的任何人)认为的版本控制系统,因此我在桌面上使用Git来提供版本控制。以下是我当前工作流程的主要特点:
- 桌面和主机通过FTP“同步”。最终,所有开发工作,无论是在主机上编写还是在PC上编写,都会在Git分支中以PC的形式结束。 - 我没有任何现代部署技术的访问权限,例如Hudson。 - 我有两个主要的分支,称为Test和Prod。由于产品的(继承的)结构,测试和生产实例之间的代码存在一些差异。例如,所有显示面板都需要清楚地标识出这是Test还是Prod,但没有办法在单个点上配置此信息。 - 我通常为特定的开发子项目创建其他分支。 - 一般开发是在Test分支上完成的,具有多个提交。准备好后,这些提交会被挑选到Prod上,并在获得批准后上传并打上更改编号的标签。 - 紧急工作(幸运的是很少)在Prod分支上完成,并被挑选到Test上。 - 这种挑选有时需要手动合并。
我应该改进这个工作流程。目前我的存储库中充满了两个分支上相同的并行更改。
我认为我更喜欢这样做(对于Test -> Prod):
- 一旦开发准备好,就在Prod的HEAD处创建一个新分支。 - 将这组开发更改折叠成新分支上的单个更改。 - 将此新分支合并到Prod上。请记住,它们的共同祖先在使Test与Prod不同的更改之前。
看起来`git rebase -i`可能会完成这项工作,但我必须承认`git rebase`是我的难点,而且我已经多次搞砸了我的树。
因此,我的问题是:
1.请在产品的约束条件下提出更好的方法。
2.如果我的首选方法可行,请有人建议`git rebase -i`的正确参数?