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

时间:2009-11-20 22:55:16

标签: git branch

我有两个主要的分支,每个分支用于不同的功能,然后我有一个综合分支,将两者结合起来。我向合成分支提交了一些内容,但现在我发现我宁愿将该更改应用于该特性的一个特定分支。有没有办法做这个unapply /应用git的其他地方操作?

2 个答案:

答案 0 :(得分:35)

Cherry-pick提交目标分支并重置源分支。假设您要将最新提交从source分支移动到target,请执行以下操作:

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

如果提交不是最后一次,则必须使用git rebase -i而不是最后一个命令,并为cherry-pick选择特定的提交名称。

答案 1 :(得分:2)

一般来说,当我做这样的事情时,我会:

  1. 使用git diff(例如git diff HEAD^ HEAD
  2. 创建反向补丁文件
  3. 将此反向修补程序应用于我要删除更改的分支。
  4. 查看我想要更改的分支
  5. 使用git cherry-pick应用适用的提交
  6. 我相信有一种更简单的方法,但我更喜欢这个,因为我更好地使用(并记住)diff / cherry-pick命令