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

时间:2015-03-02 04:15:22

标签: git

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

我们的一个功能是延迟到下一个版本,因此在dev分支中间的一个提交需要移动到下一个分支。我该怎么办?

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

1 个答案:

答案 0 :(得分:2)

您无法移动提交,但可以使用git cherry-pick复制提交,并使用git revert将其删除。

首先,获取提交的提交ID。我们说它是abc123。

要将提交复制到下一个,请检查下一个分支和樱桃选择。可能存在冲突,按照git的指示处理它们。

  • git checkout next
  • git cherry-pick abc123

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

  • git checkout dev
  • git revert abc123

这将记录撤消abc123的新提交。

您还可以使用git rebase -i abc123^代替revert从历史记录中完全删除提交。对于这种情况来说这太过分了。由于大概该分支已经过测试和开发,因此您希望保留通过该过程存在的该提交的记录。使用rebase也会将所有提交ID从abc123转发,这将要求所有人git pull --force,并且如果可能的话通常应该避免。