一、为什么需要将一个 commit 复制到其他分支上去呢?
在我们的实际开发的过程中,我们的项目中会存在多个分支。
在某些情况下,可能需要将某一个分支上的 commit 复制到另一个分支上去。
二、具体操作流程
![](https://i-blog.csdnimg.cn/blog_migrate/f8663b3aeb223f472d7b0c45a7a1178d.png)
就像这张图所描述的这样,将 develop 分支中的 C~E 部分复制到 master 分支中去。
这时我们就可以用 git rebase 命令来实现了。
目前 master 分支上只有一个 commit。
![](https://i-blog.csdnimg.cn/blog_migrate/8aadc8e4f993b37a13f3337c36054767.png)
develop 分支上有四个 commit。
![](https://i-blog.csdnimg.cn/blog_migrate/c03e00d2da28bc3d8dbf59287c63d9a4.png)
我们需要将最后三个 commit,复制到 master 分支上去。
ps: 命令说明
// startpoint 第一个 commit id, endpoint 最后一个 commit id,branchName 就是目标分支了。
$ git rebase [startpoint] [endpoint] --onto [branchName]
执行 git rebase 命令之后,我们发现当前的 HEAD 处于游离状态。
所以我们需要使用 git reset 命令,将 master 所指向的 commit id 设置为当前 HEAD 所指向的 commit id。
![](https://i-blog.csdnimg.cn/blog_migrate/2c7f7696c94df21bfed89311733ae6e9.png)
然后 git log 查看,这三个提交已经在 master 分支了。
![](https://i-blog.csdnimg.cn/blog_migrate/cb431544bf1bbad7b2f7b0f2b71b909c.png)
三、总结
在这篇文章中,我们主要是使用了 git rebase 命令,来实现将一段 commit 复制到另一个分支的功能。
其实在实际项目版本控制当中,git rebase 还有很多方面的应用。我们以后再详细的介绍。