git merge 和 git rebase的区别

目标都是将一个分支的commit合并到到另外一个分支中去

git merge

  1. 在gitlab上新建一个我的项目,push一个test文件下来

    2.在本地批改test文件做两次commit,每次commit都在文件中加一句批改


3.在近程仓库中间接批改文件并commit,模仿其余开发者的commit

4.如果此时我push本地的提交到近程,就会被回绝,因为近程和本地曾经各自有commit了,咱们惯例的做法是git pull一下,在本地解决抵触,而后持续push,实质上git pull = git fetch + git merge

产生抵触:


解决抵触:

从新走add commit 而后push,能够看到必须将合并当作一个新的commit:

git rebase

如果咱们此时采纳git pull --rebase,也就是=git fetch + git rebase

  1. 一样本地commit2次,近程commit2次

  1. 应用能够看到git pull --rebase,还是会提醒咱们去解决抵触,然而从git log 上能够看出显著曾经产生了rebase,也就是变基,本地分支基于了近程的最新commit,而不是上次的本地commit

  1. 解决抵触,每解决完一次本地commit抵触,用git add标记抵触已解决完,用git rebase --continue持续解决下一个本地commit,也能够先用git rebase -i将本地的commit合并为一个commit,这样git pull --rebase就能一次解决所有的抵触

  1. push到近程之后,在分支图能够显著看到,跟merge的区别在于,rebase不会产生分支,并且也不会产生新的提交