第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即可。