1
0
forked from iicd/git-learner
git-learner/notes/3.2_resolve_conflict.md

61 lines
1.5 KiB
Markdown
Raw Normal View History

2024-08-25 00:00:06 +02:00
## 3.2 resolve conflict
### 3.2.1 拉回操作中的合并
pull操作的第一阶段将共享版本库master分支的最新提交拉回到本地并且更新到本地版本库特定的引用。
第二阶段将本地分支master和共享版本库的本地跟踪分支origin/master进行合并操作。
push操作是将本地提交推送到共享版本库中。
`git pull = git fetch + git merge`
```bash
git merge [option...] <commit>...
```
### 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
```
本质上就是删除掉其他两个,留下来一个想要的