赞
踩
一、为什么用rebase?
1、开发需求时,需要自己创建一个个人开发分支写需求。。假设是从dev或者master分支拉的新分支(dev-zld)
当自己的需求写完了,一般我会把这个新需求的在dev-zld上多个提交记录先合并为一条commit记录
(当然,主要看公司规范,之前的公司是要求一个需求只能有一条提交记录,怎么做的请看:https://blog.csdn.net/qq_36951116/article/details/107923312)
2、当在自己的个人分支dev-zld开发期间,可能你的同事把他的分支代码合并到dev上了,也就是说,你的dev-zld上的代码很可能不是最新的。。
在以前,我们直接把dev-zld分支merge到dev上,这也可以,但这会让git提交记录很杂乱,也就是会有无用的merge信息以及分支树分叉,比如“Merge remote-tracking branch 'origin/master'”(不得不说,我还是喜欢用merge的,用起来简单方便)。
现在呢,为了保持提交记录的洁净以及git分支树不会分叉,就需要用rebase来做了。
二、这里主要用idea 的git可视化提交演示步骤
1、把dev-zld的多条提交记录合并为一条,如果公司不要求就忽略(可以参考:https://blog.csdn.net/qq_36951116/article/details/107923312)
2、把dev上的最新代码通过rebase合并到当前分支dev-zld
这个时候我的个人分支dev-zld就已经把dev上的最新代码给合并过来了,分支树还不会乱(然后push到远程仓库,这push也可以不做,无所谓)
当然,如果代码冲突了,那还是需要解决冲突的。这里把dev先合并到dev-zld就是为了在你自己当前分支解决冲突。
3、再切换到dev分支
4、重复第二步,只不过这个时候是把dev-zld的代码通过rebase合并到dev上(因为第2步的时候再dev-zld解决了冲突,这个时候基本上不会再冲突了,除非在这期间刚好你的同事又提交代码了)
5、然后再看提交记录树,是一条线的,并且没有merge信息
6、把本地dev push到远程仓库的dev上即可
7、上述前提是代码不会出现冲突,否则还是会出现merge信息的。。。。当然,这个也有解决办法,就是重新reset到某个提交版本,然后把这个commit版本之后的所有提交信息合并为一条commit记录(还是上面的那篇文章:https://blog.csdn.net/qq_36951116/article/details/107923312)。。。我之前的公司是通过项目管理手段避免代码冲突的,也就是你负责的需求和别人的需求是尽可能不会凑到一块。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。