rebase(变基)
应用场景
第一种:多个记录整合成一个记录
- 我们最开始的时候master的版本可能是C1,然后我们进行开发,每一天都有提交的记录,最后完成了工作可能有5次的提交记录,这个提交记录对我们自己有用,记录着每天的开发流程,但是老板只关注于C1到C2的变化,并不关心中间的提交过程,可以使用rebase进行变基,只保留C1到C2的提交记录,看起来直接从C1到C2

- 注意:当我们想要合并的M1,M2,M3,C2中有的已经被提交到远程仓库了,就最好不要使用rebase进行提交记录的整合了,这样会使得远程和本地的提交记录不一致,容易出现问题
操作过程
git rebase -i HEAD~3
git rebase -i 最远的版本号
第二种:多个分支记录整合成一个分支记录
- 开发中可能可能有多个分支,例如将master分出dev分支进行代码的开发,这样在我们提交记录的时候,我们的dev分支上的提交记录也会跟着记录到我们的提交结果中,我们不想让这些结果出现,我们可以使用rebase,让提交记录只出现在master分支上,这样看起来我们好像没有分过支一样

操作过程
git checkout dev
git rebase master
git checkout master
git merge dev
git log --graph
git log --graph --pretty=format:"%h %s"
第三种:公司代码和家庭代码各开发50%,直接pull会产生新的分支,使用rebase
- 公司代码和家庭代码各开发50%,直接pull会产生新的分支,假设公司的代码提交远程了,但是家庭的代码只是提交到了本地,首先使用fetch命令将远程的dev上的代码拿下来,实际上是放在了本地的版本库中,然后使用rebase,将远程的代码变基到现有的本地代码中,这样不会产生分支

- 命令
git checkout dev
git fetch origin dev
git rebase origin/dev
注意事项
- 我们在使用rebase的过程中不可能一帆风顺,很多的情况下会产生冲突,下面是解决办法
- 首先我们先解决冲突
- 解决完冲突,add操作,不用commit,下面执行continue会自己进行提交版本
- 因为之前是rebase的过程被打断了,要重新git rebase --continue


冲突
- 软件beyond compare

