在上面的过程中,更新代码我使用的是 git pull origin B1 --rebase
而不是 git pull origin B1
这也是平时使用 rebase 注意的一点,git pull
这条命令默认使用了 --merge
的方式更新代码,如果你不指定用 --rebase
,有的时候就会发现日志里有这样的一次提交 Merge branch 'dev' of gitlab.xpaas.lenovo.com:liuyy23/lenovo-mbg into dev
什么?自己分支合并到了自己分支,显然这个没有什么必要,而且在时间轴上也不好看,平白无故多了一条线出来,对于强迫症的我来说看着就难受。。。
还有就是使用 rebase 之后,如果直接使用 git push origin B1
发现是不好使的,提示也说明了提交失败的原因,我个人是这么理解的,使用 rebase 之后,master分支上比B1分支上多的修改,直接“插入”到了B1分支修改的内容之后,也就是 master 分支的修改在 B1 分支上重演了一遍,相对远程 B1 分支而言,本地仓库的B1分支的“基底”已经变化了,直接 push
是不行的,所以确保没有问题的情况下必须使用 --force
参数才能提交,这也就是官方对 rebase
作为 “变基” 的解释(个人观点)。