例如,我刚刚将master分支合并到我的feature分支。然后有人向大师推了些新东西。所以我再次合并以跟上。然后有人再次推动...我又合并了。如何压缩之前的合并,以便将两个合并操作合并为一个?
我该如何转动:
o---o---A---B---C---D---E
\ \ \ \
F---G---H---I---J
对此:
o---o---A---B---C---D---E
\ \
F---G-----------J'
其中J和J'包含完全相同的代码。
答案 0 :(得分:1)
如果自G
以来仅对功能进行合并提交,则可以将分支重置为该提交(使用--hard
来重置工作副本文件),然后重做合并:
git checkout feature
git reset --hard G
git merge master
您还可以使用git rebase master
代替git merge master
,以便您的分支仅包含提交F'
和G'
,是从master上的E
分支出来的。
答案 1 :(得分:1)
此方法通过将以前解决的更改重播到合并提交中,从而避免了重新解决合并冲突的需要。
GET /_search
{
"query": {
"match_phrase" : {
"message" : "green elephant"
}
}
}
我们首先删除旧的合并以创建修剪后的功能分支,然后从母版创建干净的功能分支,使用git checkout feature
git diff master > feature.patch
git reset --hard G
git branch --move trimmed_feature
git checkout -b feature master
git merge --strategy ours trimmed_feature --no-edit
git apply feature.patch --index
git commit --amend --message "Merge branch 'master' into feature"
git branch -D trimmed_feature
合并到修剪后的功能分支中,以忽略更改,然后重新应用先前解决的功能从补丁中更改。