在push代码时,会提示使用git pull命令,也就是拉取远端代码,更新我们的仓库,那么为什么又要加个 --rebase命令呢?下面来说说这个问题,先从这两命令开始。
二者的区别是,在fetch之后的操作不同,merge与rebase的不同。 假设当前master的提交如下: 如果是你或者你的同事在cid2点,开发进度是cid20(或者突然撇出一个分支,假设是tmp分支),此时要把cid20提交到master 在master执行git merge tmp,然后会得到如下结果: 新增了一次提交记录cid6, 似乎也没有什么问题。如果你装了小乌龟,查看提交日志,可能就是下面的样子: 那么来看看git rebase, 在master执行git rebase tmp,操作之后的分支如下: 二者对比可知,rebase没有产生新的节点,使用rebase的git演进路线(提交树)是一直向前的,这样在版本回退时也很容易,用merge的git路线是跳跃的,如果版本回退你也找不到自己想要的版本,如果在merge时出现了冲突那就麻烦了,当前merge就不能继续进行下去,需要手动修改冲突内容后,add,commit, push. 而rebase 操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后, 再执行 git rebase –continue 继续操作,再push. 想要更好的提交树,建议使用rebase操作会更好一点,这样可以线性的看到每一次提交,并且没有增加提交节点。不过也有些项目,不建议使用rebase, 这就得看公司与项目的规定。 那么到此git pull --rebase与git pul的区别也讲清楚了。
|
|