如何将当前分支中间的特定提交移动到另一个分支?

How to move a specific commit in the middle of current branch to another branch?

我们有三个分支:prod、dev、next。

我们的一个功能延迟到下一个版本,所以开发分支中间的一个提交需要移动到下一个分支。我该怎么办?

P.S。我想移动提交而不是复制。

您不能移动提交,但可以使用 git cherry-pick 复制它并使用 git revert 删除它。

首先,获取提交的提交ID。假设它是 abc123。

要将提交复制到下一个,请签出下一个分支并挑选。可能有冲突,按照git.

的指示处理。
  • git 下次结账
  • git 精选 abc123

要从 dev 中删除提交,请签出 dev 并将其还原。

  • git 结帐开发
  • git 还原 abc123

这将记录一个新的撤销 abc123 的提交。

您也可以使用 git rebase -i abc123^ 而不是 revert 来从历史记录中完全删除提交。对于这种情况,这太过分了。由于大概该分支已经过测试和开发,您希望保留通过该过程存在的该提交的记录。使用 rebase 也会将所有提交 ID 从 abc123 向前更改,这将要求每个人都 git pull --force 并且通常应尽可能避免。