Git命令行等效于两次任意提交之间Sourcetree的反向连接

问题描述

假设两个分支B和D共享一个共同的祖先提交A:

A -- B
  \_ C -- D

在Sourcetree中,除了查看B和D(git diff B..D)之间的变化外,还有一个选项可以反转diff中的块和线,即将B和D之间的差异更改应用于提交B或反之亦然。

使用Sourcetree反转差异中的块没有引起任何冲突,但是我在命令行中使用git revert B..D的尝试导致了冲突。有没有一种方法可以通过命令行完成此操作而不会引起冲突?

解决方法

从差异输出创建补丁并应用它:

git checkout B
git diff B..D > temp.patch
git apply temp.patch
rm temp.patch
# select hunks
git add -p