图解Git第三章:解决冲突、“git merge和git rebase的区别”

第1节:解决冲突

1.1提交冲突和文件冲突

这里是我个人的理解和叫法,不代表专业术语

  • 提交冲突:本地分支A想要push到远程分支A之前,远程分支A已经本另一个人push过一次,但是两个人修改的内容没有交集,互不影响;
  • 文件冲突:在提交冲突的基础上,两个人修改的内容有交集,即两个人修改了同一个文件。

1.2解决方法

  • 提交冲突:直接git pull,将远程分支A上的最新节点合并到当前分支,最后再git push即可;
  • 文件冲突:git pull,然后根据提示手动修改冲突的文件,然后add、commit,最后再git push即可。

第2节:merge与rebase

2.1二者区别图解

简单来说就是:如果merge会使提交历史产生分叉,而rebase则可以将避免产生分叉,而是一条干净的直线

在这里插入图片描述

2.2git pull与二者的关系

  • git pull = git fetch + git merge
  • git pull --rebase = git fetch + git rebase

2.3文件冲突时,如何使用git rebase

1.如果有文件冲突,git rebase命令生成一个叫 `no branch` 的本地分支,可以在该分支上手动解决冲突,然后add、commit;
2.但是该分支有一个特点:切换到别的分支,该分支就会消失;
3.这时就需要记住`no branch`分支的`git log`中最新的历史节点`commit id`;
4.然后切换回原分支,使用git reset --hard [commmit_id],即可拥有`no branch`分支上的历史节点;
5.最后按照正常流程push即可。

猜你喜欢

转载自blog.csdn.net/w_y_x_y/article/details/105959350
今日推荐