G---H // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
Run Code Online (Sandbox Code Playgroud)
根据我们对项目的特殊需求,上述情况很常见.我们的master/dev分支有一些提交.然后我们得到一个错误报告并开始修复bug分支(上面提交C和D).在此期间,dev分支中会发生更多提交.接下来我们被告知我们需要为客户创建一个版本,该版本不能包含上面提交的B,E和F引入的更改,但它应该包括错误修复.
所以我们在更改B之前应用了dev,但是将错误修复到这个版本分支的最佳方法是什么?如果我执行分支的合并,它将包括在B中做出的我不想要的更改.我可以执行提交C和D的樱桃选择,但我读到基于这个答案的樱桃采摘并不总是一个好主意,因为我的回购将会是这样的:
G---H---C'---D'--- // Release Branch
/
/
A---B---E---F--- // master
\
\
C---D--- // bug fix branch
Run Code Online (Sandbox Code Playgroud)
因此C'和D'显示为具有不同sha-1 ID的全新提交,如C和D.这真的是一件坏事吗?这会导致什么问题?有没有更好的方法将错误修复分支的更改发送到发布分支?
假设我有一个feature已经分支的分支master.developer1和developer2结账两者feature.developer1提交更改feature并推送它.然后developer3推送一些东西master.此时master并feature发散,每个都有一个单独的提交.
什么是去获得从最新的正确方法master进入feature,如果有冲突?我应该重新master加入feature,还是合并?
编辑:
我应该提一下,在这种情况下,我不想重写developer2上的历史记录.因为那会很糟糕.对?