## 3.2 resolve conflict ### 3.2.1 拉回操作中的合并 pull操作的第一阶段,将共享版本库master分支的最新提交拉回到本地,并且更新到本地版本库特定的引用。 第二阶段,将本地分支master和共享版本库的本地跟踪分支origin/master进行合并操作。 push操作,是将本地提交推送到共享版本库中。 `git pull = git fetch + git merge` ```bash git merge [option...] ... ``` ### 3.2.2 自动合并 多个用户修改了不同的文件/相同文件的不同部分,可以自动merge 1. 多个用户修改了不同的文件 2. 相同文件的不同部分(开头,结尾) 3. A用户移动文件,B用户编辑文件,自动merge会把编辑好的文件移动到对应位置 ```bash git fetch git merge origin/master # origin/master就是共享版本库的本地分支 git push ``` ### 3.2.3 逻辑冲突 存在逻辑冲突,需要在合并后进行单元测试 ### 3.2.4 冲突解决 git pull以后会提示冲突文件,如果忘记了用git status也可以 git会自动把冲突的位置用七个<和七个=以及七个>标记出来,将他们删除掉,修改成想要的代码,就可以merge了 ```bash git log --oneline --graph -3 ``` ### 3.2.5 树冲突 文件处于不同状态,比如一个用户改名,另一个用户改成不同名字 ```bash git rm readme.txt git rm doc/README.txt git add README ``` 本质上就是删除掉其他两个,留下来一个想要的