我们刚刚切换到git(使用gitflow分支模型)并且在我们需要退出更改时遇到一些麻烦。
不幸的是,我们经常认为,由于在回归过程中发现的问题或者在测试周期的相当较晚的时间,某个功能不会在版本中发布。我们可以轻松地恢复要退出的功能分支的合并提交,但在合并了错误更改后切断的功能分支也将包含该更改,并且可以在应该发布之前将其恢复到开发或发布分支。
示例:
|reverts f1
develop-> X---o---o---Y---Z---R---P <- merge f2 to develop picks up f1
\ / \ /
f1-> A---B---C f2-> D---E
从示例中,f1被剪切,处理并合并回来开发。 f2被切断并开始工作。 f1从提交R处的开发中恢复。然后f2完成并合并回到在提交P处开发。提交P是问题所在:f1通过此提交返回开发。现在,我们在回复中遇到了什么问题吗?有没有办法确保恢复提交不会重新开发?我们使用'revert -m1'恢复。
当我们恢复合并提交时,有什么问题我们做错了吗?我们有什么方法可以做到这一点,因此f1提取的f1的提交将不会包含在合并回来开发中吗?我们是否必须在所有前向功能分支上手动还原这些提交?我们是否应该从开发中删除Master的所有功能分支,因此我们知道他们无法从可能还原的功能中获取任何更改?
欢迎任何建议,谢谢!
答案 0 :(得分:1)
I don't think there is anything wrong with your workflow except that you have to account for reverting of a commit as it applies to all children not just the develop branch. Because the feature branch f2 also has the changes for f1 i.e. f2 = f2 +f1 in your example and when you merge f2 back in git thinks you want f1 back in as well.
In your example above, you could include a commit R' on the f2 branch to accomplish what you would like to happen.
|reverts f1
develop-> X---o---o---Y---Z----R----P <- merge f2 to develop picks up f1
\ / \ /
f1-> A---B---C f2-> D--R'--E
**|reverts f1**
This is assuming that f2 is a long running branch. If it's not and you anticipate it to be a short branch then i'd hold off on the revert R and do it after you merge f2 and its sisters back into develop. This may be useful if you have quite a features being worked on in parallel.
**|reverts f1**
develop-> X---o---o---Y---Z-------P---R-- <
\ / \ /
f1-> A---B---C f2-> D---E
Hope this helps.