这就是我们的树现在的样子:
@ branch: default
| new feature work
|
|
o branch: default
| new feature work
|
|
o branch: default
| bug fix C
|
|
o branch: default
| bug fix B
|
|
o branch: default
| new feature work
|
|
o branch: default
| bug fix A
|
|
o branch: default
| tag: ReleaseV1.0
|
|
... ancient history
这就是我希望我们的树看起来像:
@ branch: default
| new feature work
|
|
o branch: default
| new feature work
|
|
o branch: default
| new feature work
|
|
|
| o branch: V1.1Fixes
| | bug fix C
| |
| |
| o branch: V1.1Fixes
| | bug fix B
| |
| |
| |
| o branch: V1.1Fixes
| | bug fix A
| |
|/
o branch: default
| tag: ReleaseV1.0
|
|
... ancient history
这可能吗?
答案 0 :(得分:2)
在这种情况下,我会使用transplant
extension。移植的变更集不会在fixes
分支中移动,而是保留在开发(default
)分支中。我真的不知道那些“新功能工作”的提交是什么,但我觉得你正试图transplant
。
不删除“新功能工作”提交,历史记录图表如下:
o branch: V1.1Fixes
| transplanted bug fix C
|
|
@ | branch: default
| | new feature work
| |
| |
| o branch: V1.1Fixes
| | transplanted bug fix B
| |
| |
o | branch: default
| | new feature work
| |
| |
o | branch: default
| | bug fix C
| |
| |
o | branch: default
| | bug fix B
| |
| |
| o branch: V1.1Fixes
| | transplanted bug fix A
| |
| |
o | branch: default
| | new feature work
| |
| |
o | branch: default
| | bug fix A
| |
|/
o branch: default
| tag: ReleaseV1.0
|
|
... ancient history
如果那些“新功能工作”提交只是伪标志提交以保留开发树中的更改,那么如果transplant
,则不再需要它们。我保留它们就好像它们是一些后期开发文档,更新日志更新,......
答案 1 :(得分:0)
查看RebaseProject和Rebase Extension。您还可以使用Transplant Extension将分支机构中的补丁应用于一个或多个其他分支(以获得与Django历史记录相似的内容)。
答案 2 :(得分:0)
是的,这是可能的(只要新功能不依赖于对错误修复更改集所做的更改),但不建议这样做。
这可以通过在MQ中导入更改集,直到标记版本V1.0然后在正确的分支上重新提交来轻松实现。
但是,请记住这样做,您将更改历史记录,这意味着将修改这些更改集的所有哈希值,这意味着您将阻止所有已撤消最新更改的用户。