在以下git场景中:
A -- B1 -- B2 -- B3
\- C1 -- C2 -- C3
我想将C合并到B中,生成另一个修订版D,这样B3和D之间没有任何变化。换句话说,结果是:
A -- B1 -- B2 -- B3 -- D
\- C1 -- C2 -- C3 -/
和D与B3相同。
使用git merge --strategy-option ours
并没有做正确的事情:它解决了有利于B的冲突,但仍然合并了非冲突的更改。
答案 0 :(得分:2)
master
分支指向C
且better_branch
指向B
,这应该有效:
git checkout better_branch
git merge --strategy=ours master # keep the content of this branch, but record a merge
git checkout master
git merge better_branch # fast-forward master up to the merge
答案 1 :(得分:2)
我会用
git commit-tree B^{tree} -p B -p C -m "Merge from C but accept no changes"
这会打印一个提交,您可以快进合并。
commit-tree
表示"创建一个提交,其树与当前在B中的树相同。其父项是B和C的当前值。"然后,您可以将此提交快速转发到B或C.