3路合并后推进主分支

时间:2017-04-19 05:19:02

标签: git

假设我的提交看起来像这样: enter image description here 现在,为了执行3向合并,我发出:

git checkout iss53
git merge master

假设没有冲突,我的日志现在看起来像这样: enter image description here 如何将master推进到C6?

图表改编自Pro Git中的图表。

2 个答案:

答案 0 :(得分:3)

这不是您处理此问题的正常方式。通常,您只需将iss53合并回master。这通常通过在iss53合并之后推送master,然后创建拉取请求来完成。然后,iss53将合并到master中,并且两个分支在该确切时刻将在功能上等效。

您可以使用git branch -f

获得问题的字面答案
git branch -f master C5

并将C5替换为iss53的HEAD指向的提交的SHA-1哈希值。但同样,我不会这样做。

此处的另一种方法是iss53上的 rebase master,然后使用重新分支的快进master

master: C0 -- C1 -- C2 -- C4
                     \
iss53:                C3 -- C5

结帐iss53master上的rebase:

git checkout iss53
git rebase master

在此之后,图表看起来像这样:

master: C0 -- C1 -- C2 -- C4
                           \
iss53:                      C3' -- C5'

现在您可以将iss53推送到master并快进前一个分支。这会使master看起来像这样:

master: C0 -- C1 -- C2 -- C4 -- C3' -- C5'

答案 1 :(得分:3)

git checkout master
git merge iss53

将通过快进做到这一点。