git 上合并分之的冲突解决

关于git的分支合并
git开发的过程中涉及到分支,也就是不同的开发路径。
如:
a->b->c
此时从c点开始分叉
有两个人可以同时在c上开发。
c->d
c->e
但是这就涉及到一个问题 冲突
两个人的版本均是基于c版本的
假使两个人都修改了c版本中的同一个文件,那么
如果两个人都向master push(向master合并)时,到底master该存储谁呢?
这时候后推送的人就会收到冲突提醒冲突被在工作区的文件里标出。
这时只要后者修改工作区文件然后add commit 这时生成一个新的版本f
即d->f e->f 这个过程可以用git log --graph 看出如下
* f
| \
*e |
| * d
f是合并点
在log中每一个内容不同的版本会用一个*标出


但并不是所有的不同版本修改都会有冲突
假如两个修改者修改的不是一个文件 或者是一个文件不相关的部分那么git将直接将二者不同的地方叠加行程新的版本并且不会提示有冲突(当然逻辑上可能会有错误)


其实关于push和pull其实就分别是用本地分支合并到远程分支 和讲远程分支合并到本地分支
所以这个过程中也可能存在冲突

本质上远程分支和本地分支是一样的
都是并行的分支只不过物理存储位置不同而已
用git branch -a可以查看所有远程以及本地的分支

#关于git的树冲突的解决
树冲突表示是将一个文件在不同的分支里面进行了重命名
如果出现这种情况后进行合并
假设原来的文件是 a.c
在master分支中重命名为master.c
在dev 分之中重命名为dev.c
分别提交后 merge
然后会看到 在合并时会显示有冲突
显示 删除了 a.c
添加了 master.c
其他人添加了 dev.c
此时当前合并分之的工作区下面会同时出现master.c 和 dev.c
这时要解决冲突就要 选定其中的一个 删除另一个 然后 add commit 就可以完成合并

# 若是合并时发生冲突 git就会显示需要合并 此时git进入了一种等待合并的状态 在此状态下进行的提交将会作为合并后的结果
#git的合并中产生冲突的请款有以下几种:
1.两个分支中修改了同一个文件(不管什么地方)
2.两个分支中修改了同一个文件的名称

两个分之中分别修改了不同文件中的部分 不会被认为是冲突` 可以直接将两部分合并 具体的合并策略需要进一步参考git的手册

https://www.julyedu.com/









你可能感兴趣的:(git)