¿Cómo hacer una fusión en git sin recoger ningún cambio?

En el siguiente escenario de git:

A -- B1 -- B2 -- B3 \- C1 -- C2 -- C3 

Me gustaría fusionar C en B, produciendo otra revisión D, de modo que NO haya cambios entre B3 y D. En otras palabras, el resultado es:

 A -- B1 -- B2 -- B3 -- D \- C1 -- C2 -- C3 -/ 

y D es idéntico a B3.

Usar git merge --strategy-option ours no hace lo correcto: resuelve conflictos a favor de B, pero aún combina cambios no conflictivos.

La respuesta de Jefromi aquí debería ayudar. Básicamente, suponiendo que la twig master apunte a C y better_branch puntos a B , esto debería funcionar:

 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 

yo usaría

 git commit-tree B^{tree} -p B -p C -m "Merge from C but accept no changes" 

Esto imprime una confirmación, que puede fusionar rápidamente.

El commit-tree dice "crea una confirmación cuyo tree es idéntico al que está actualmente en B. Sus padres son los valores actuales de B y C." A continuación, puede avanzar rápidamente esta confirmación en B o C.