如何在没有获取任何更改的情况下进行git合并?

时间:2016-04-03 04:36:52

标签: git merge

在以下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的冲突,但仍然合并了非冲突的更改。

2 个答案:

答案 0 :(得分:2)

Jefromi的答案here应该有所帮助。基本上,假设master分支指向Cbetter_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.