阅读 1344
git rebase命令详解

git rebase命令详解

基础使用-合并分支

rebase解释为变基,用于将变更合并到当前分支,与merge功能相似,但是合并后的gitGraph更优美

以下是在git官网截来的图,这里用于解释说明。解释样例中存在主干master和开发分支topic

原始分支状态

当我们使用git merge 进行topic=>master的合并时,会保存两条分支,并合并到master,但是使用rebase进行合并,会改变topic分支拉出的位置,将拉出位置变更为master最新commit并合并topic最新代码。

merge命令 rebase命令

接下来通过本地的实际操作记录,做个对比。

  1. merge合并操作

merge合并结果

  1. rebase合并操作

背景:主干分支dev/git-master,两个完全一样的开发分支dev/git-dev和dev/git-feature

执行rebase前:执行rebase前

执行rebase后:执行rebase dev后

补一张多次提交rebase: 多次提交rebase

rebase的结果就是这样,几乎没有分叉,所有的合并都在仅有的几条线上。但是在rebase过程中会出现冲突代码,解决冲突的过程与merge不同,merge的冲突只需要在合并结束后解决一次,但是在rebase过程中,需要按commit记录依次进行冲突的解决,每解决一次,都要执行git add .git rebase --continue继续合并,如果不想解决某次冲突,则可以执行git rebase --skip跳过这次合并,若要放弃合并,执行git rebase --abort

技术提升-合并提交

git rebase -i <commit-id> 合并本地提交

本地四次commit 4个本地提交

开发过程中遇到紧急需求,当前分支的代码需要临时commit,偶尔commit几次,最后要提交远程的时候,就会发现本来只有一个功能模块,却有7 8次commit,想要解决这个问题,执行git rebase -i进入交互模式,可以看到有本地所有的commit记录,想要保留最近两次,那就删除其他的pick行,:wq退出交互模式,依次解决冲突,提交后OK。 交互模式保留最近两次

commit-id不为空的话,列出的就是从commit-id到最近的提交列表

总结

相较于merge,rebase可以提供更清晰的提交记录。 注意:不推荐在公共分支上执行rebase操作,由于rebase的变基特性,会导致分支内容混乱

文章分类
开发工具
文章标签