如何将当前分支中间的特定提交移动到另一个分支?
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
并且通常应尽可能避免。
我们有三个分支: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
并且通常应尽可能避免。