我正在努力从分支" hotfix"进入"主人"在特定的#34;位置"或者在主分支不断变化时提交
"修补程序" branch当然是一个修补程序,需要从master中跟踪以供以后使用。
你如何提供这个?
示例
A - B - C - D / master
|
\
\_ hotfix containing commits E - F - G
&#34>主人"分支应该成为
A - B - E - F - G - C - D / master
有没有机会通过避免合并冲突来实现这一目标?
PS:目标是没有另一个分支,例如"修复/修复程序-123"
答案 0 :(得分:2)
编辑:已更新,以匹配以下评论中提供的其他信息 编辑2:添加标记建议
目标:将修补程序合并到版本1.0
首先,让我们重新描述原始图片。
A---B---C---D // master
\
E---F---G // hotfix
假设这是历史目前的样子
C---D // master (2.0)
/
A---B // current version 1.0
\
E---F---G // hotfix
我建议创建一个分支来跟踪版本1
git checkout -b release/v1 <B's commit SHA>
创建一个标记来标记实际发货的内容
git tag v1.0.0
然后将修补程序合并到此新分支
中git merge hotfix
创建标记以标记新版本并将其发布到需要的地方
git tag v1.0.1
您的历史记录现在将如下所示
C---D // master (2.0)
/
A---B // tag v1.0.0
\
E---F---G // branch release/v1 and tag v1.0.1
最后,听起来您不需要2.0版中的修补程序更改,但如果您这样做:
git checkout master
git merge hotfix
无法将修补程序分支“合并”到master中,并使历史记录看起来像您想要的那样。但是,如果您愿意重写主分支,则可能。 警告:这会给在主分支机构和should be avoided工作的其他人带来很大的痛苦。
鉴于
A---B---C---D // master
\
E---F---G // hotfix
您可以使用
获得所需的历史记录git checkout master
git rebase hotfix/foo
这将导致
A---B---E---F---G---C'---D' // master
\
C---D // original master