[英]Merging a grand children branch in GIT
我处在特定情况下,在把我的所有分支弄乱之前,我想先发表一下意见:-)目前,我有这样的体系结构:
master
hotfix
development
p2
最近,我遇到了一个问题,不得不在hotfix
分支上工作。 现在它已修复,我将其合并到master
。 通常,当我部署某些东西时,它来自development
分支,但是,由于日程安排的重大修改,我将不得不部署p2
分支而不是development
分支。 事实上,在变化p2
必须在一个之前走活development
(和一个在development
的问题之前不能进去p2
)。
部署p2
并不是问题,但是接下来我对后续步骤有疑问。
master
分支与p2
分支合并(以进行最新更改)而无需先合并到development
? 1
,则我希望在代码部署后将p2
合并回master
,但是,如果我尝试将master
合并到development
(将p2
的更改放入development
),我所做的所有更改都将p2
是否包含在合并中? 恐怕不是这种情况,因为我与master
进行了第一次合并(因为它的最新提交在p2
所有更改之后都已完成)。 谢谢
更为详细的答案:
您的开始状态是:
# sketch 1 :
*--A--*--*--*--*--*--*--*--* master
\ \ /
\ *--*--*--* hotfix
\
\
*--*--B--*--*--* development
\
*--*--*--* p2
您可以将p2合并到master中:
# sketch 2 :
*--A--*--*--*--*--*--*--*--*-----* master
\ \ / /
\ *--*--*--* h /
\ /
\ /
*--*--B--*--*--* d /
\ /
*--*--*--* p2
完成此操作后,git存储了以下事实: B
提交(以及A..B
之间的所有提交)都是master
历史记录的一部分。
因此,稍后,当您决定将开发合并到master中时:
# sketch 3 :
*--A--*--*--*--*--*--*--*--*-----*-----* master
\ \ / . /
\ *--*--*--* h . /
\ . /
\ . /
*--*--B--*--*--*--*----*--* development
\ .
*--*--*--* p2
它只会查看B..development
之间的B..development
(而不是A..development
)
在这些草图上, p2
绘制在development
之下。
但是git不在乎“以下”的概念。
从git的角度来看, sketch 2
与:
# sketch 2':
*--*--*--* h
/ \
*--A--*--*--*--*--*--*--*--*--* master
\ /
\ *--*--*--* p2
\ /
\ /
*--*--B--*--*--* d
sketch 3'
在显示git如何解决master
与development
之间的新“分叉点”时可能更清晰:
# sketch 3':
*--*--*--* h
/ \
*--A--*--*--*--*--*--*--*--*--*------* master
\ / /
\ *--*--*--* /
\ / /
\ / /
*--*--B--*--*--*--*--*--* development
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.