接触git快一年了,之前都不会rebase操作,最近刚刚学会了一点。
平时开发中推荐用rebase方式,只有涉及到分支合并的时候才会用merge操作(听别人讲的)。
接下来讲一种rebase操作方式:
1、可以先用stash方式缓存我们的没有commit的代码
可以看到commit的数量变成了0
2、用rebase方式拉取代码,因为我们stash了我们的本地改动,所以这样拉是肯定没有冲突并且一定会拉到最新代码
3、拉取之后,执行stash pop操作,就是将放到缓存区的文件拿出来,这个时候可能会有冲突,自行解决就好
可以看到原来的文件又回来了,commit数量变为了1
4、commit代码并提交到对应分支上
至此,完成rebase操作,基本上可以看到一条直线的提交历史。
-------------------------------------------------------------------------------------------------
注:
1、stash操作放到缓存区是我个人看法,实际上有更准确的叙述方式
2、有时候不仅仅会出现本地的冲突,有时提交到远程以后,远程那边也会出现冲突,目前远程如果是用Gerrit,就有可能出现远程冲突,之前用gitlab没有这个问题,可能没有遇到。最常见的情景是两个人几乎同一时间提交了对同一个文件的改动,这样Gerrit就可能会提示有冲突,需要abandon掉这次改动,重复上述的rebase操作再提交代码。