假设我的提交看起来像这样: 现在,为了执行3向合并,我发出:
git checkout iss53
git merge master
假设没有冲突,我的日志现在看起来像这样:
如何将master
推进到C6?
图表改编自Pro Git中的图表。
答案 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
结帐iss53
,master
上的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
将通过快进做到这一点。