Git 如何仅提交对分支的两次任意提交之间的更改?

Git 如何仅提交对分支的两次任意提交之间的更改?,git,version-control,git-merge,git-cherry-pick,Git,Version Control,Git Merge,Git Cherry Pick,我的问题是,我在一个错误的分支上进行了开发,现在我想接受/挑选我的更改,并将它们放到/重新设置到另一个分支上。我只想把已经修改过的文本行取下来,没别的了 下面是一个例子来说明我的问题: C3 <-- Branch 1 | C2 C4 <-- Master | | C1 ----| 我想把提交C2和C3之间的更改放到提交C4上。这意味着我想把已经更改的行(C)放到commit C4上。新提交C5的文本文件应如下所示: C5: A2 C 如果我在主分支上输入 git

我的问题是,我在一个错误的分支上进行了开发,现在我想接受/挑选我的更改,并将它们放到/重新设置到另一个分支上。我只想把已经修改过的文本行取下来,没别的了

下面是一个例子来说明我的问题:

C3 <-- Branch 1
|
C2    C4 <-- Master
|      |
C1 ----|
我想把提交C2和C3之间的更改放到提交C4上。这意味着我想把已经更改的行(C)放到commit C4上。新提交C5的文本文件应如下所示:

C5:
A2

C
如果我在主分支上输入

git cherry-pick C2..C3
我得到一个冲突并打开以下视图的meld:

LOCAL:         BASE              REMOTE
A2                               A
                                 B
                                 C
这不是我想要的。我只想看看C2和C3之间的区别。所以它应该是这样的,合并起来要容易得多:

LOCAL:         BASE              REMOTE
A2                               

                                 C

这在Git中是可能的,还是有一个支持这个工作流程的合并工具?这让事情变得容易多了。

你的真实情况可能比这更复杂?如果没有,这将是微不足道的手工修复。我只想给出一个简单的例子来说明我的问题。我的实际情况要复杂得多,我正在寻找一种解决方案,这种解决方案不会像手动操作那样容易出错。当您尝试使用
git cherry pick C3
而不是
git cherry pick C2..C3
时会发生什么?我不记得范围
C2..C3
是否包含或排除了C2在cherry pick的情况下,我必须稍后进行测试。@Cupcake:git cherry pick C3 commit hash会导致相同的结果。@user3625015 hmmm,这似乎不正确。以后我得自己试试。使用
git diff C2 C3>diff.patch
获取一个diff,然后使用
git apply diff.patch
将其应用到另一个分支,怎么样?
LOCAL:         BASE              REMOTE
A2                               

                                 C