在git中,如何从一个分支中删除提交并将其应用到另一个分支?

在git中,如何从一个分支中删除提交并将其应用到另一个分支?,git,branch,Git,Branch,我在master上有两个分支,每个分支用于不同的功能,然后我有一个综合分支,将这两个分支结合起来。我向合成分支提交了一些内容,但现在我明白了,我宁愿将这些更改应用到该特性特定的分支之一。有没有一种方法可以使用git在其他地方不应用/应用此操作?选择提交到目标分支并重置源分支。假设要将最新提交从源分支移动到目标,请执行以下操作: git checkout target git cherry-pick source git checkout source git reset --hard sourc

我在master上有两个分支,每个分支用于不同的功能,然后我有一个综合分支,将这两个分支结合起来。我向合成分支提交了一些内容,但现在我明白了,我宁愿将这些更改应用到该特性特定的分支之一。有没有一种方法可以使用git在其他地方不应用/应用此操作?

选择提交到目标分支并重置源分支。假设要将最新提交从
分支移动到
目标
,请执行以下操作:

git checkout target
git cherry-pick source
git checkout source
git reset --hard source^

如果提交不是最后一个,您将不得不使用
git rebase-i
而不是最后一个命令,并为您的
cherry pick
选择特定的提交名称。通常,当我执行类似操作时,我会:

  • 使用git diff创建反向补丁文件(例如,
    git diff HEAD^HEAD
  • 将此反向修补程序应用于我要从中删除更改的分支
  • 看看那家分行,我想找钱
  • 使用git cherry pick应用适用的提交

  • 我相信有一种更简单的方法,但我更喜欢这种方法,因为我更好地使用(并记住)diff/cherry pick命令

    注意,reset/rebase都会重写历史记录,因此如果历史记录已发布,则不应使用它们-然后您必须使用git revert。