git中merge和rebase

git中的merge和rebase都有合并的功能,但是他们之间存在区别,有不同的使用场景。
比如当前在master分支,master中有A,B,C,D四个提交,dev分支中有两个提交M和N,现在需要将dev分支合并过来,那么可以通过命令

  1. git merge dev
dev:                       M -------------- N           
                          /                  \
master:           A ---- B ---- C ---- D ---- E ----
  1. git rebase dev
after rebase:

master:           A ---- B ---- M ---- C ---- D ---- N ----   线性 

从上面两张图我们可以看出他们之间的区别,merge会创建一个新的节点,之前的提交分开显示,而rebase操作不会生成新的节点,是将两个分支融合成一个线性的分支,顺序为commit的时间顺序。

冲突处理

  1. merge
    手动修改冲突,然后add,commit
  2. rebase
    有冲突的话会中断rebase,同时会提示去解决冲突,解决冲突之后,将修改add之后执行git rebase -continue继续操作,或者git rebase -skip忽略冲突。

适用场景

  1. 下游分支更新上游分支内容的时候使用 rebase
  2. 上游分支合并下游分支内容的时候使用 merge
  3. 更新当前分支的内容时一定要使用 --rebase 参数,即git pull --rebase
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容