1,Git 冲突的场景
情景一: 多个分支代码合并到一个分支时;
情景二: 多个分支向同一个远端分支推送代码时;
实际上, push 操作即是将本地代码 merge 到远端库分支上.
关于 push 和 pull 其实就分别是用本地分支合并到远程分支 和 将远程分支合并到本地分支
所以这两个过程中也可能存在冲突. Git 的合并中产生冲突的具体情况:
- <1>
- 两个分支中修改了同一个文件(不管什么地方)
- <2>
- 两个分支中修改了同一个文件的名称
两个分支中分别修改了不同文件中的部分, 不会产生冲突, 可以直接将两部分合并.
2, 冲突解决方法
情景一: 在当前分支上, 直接修改冲突代码 --->add--->commit.
情景二: 在本地当前分支上, 修改冲突代码 --->add--->commit--->push
注: 借用 VIM 或者 IDE 或者直接找到冲突文件, 修改.
3, 实战演示
(1)情景
本地库中两个不同分支, 修改同一个文件同一代码块, 两分支先后将修改合并到 master 分支上, master 在合并第二个分支代码时, 报错: 合并冲突.
(2)本地库
<1>master 分支
<2 > 建立两个分支
<3 > 两分支修改提交
aBranch 分支:
bBranch 分支:
(3)合并分支产生冲突
合并 aBranch 分支(将 aBranch 分支合并到当前 master 分支上):
注:
Git merge: 默认情况下, Git 执行 "快进式合并"(fast-farward merge), 会直接将 Master 分支指向 Develop 分支.
使用 --no-ff 参数后, 会执行正常合并, 在 Master 分支上生成一个新节点. 为了保证版本演进的清晰, 建议采用这种方法.
再合并 bBranch 分支, 产生冲突:
mergeTest.txt 文件内容:
(4)解决冲突
--->在当前分支上(master), 找到冲突文件, 直接修改冲突代码, add,commit.
注: 简单方法, 使用 VIM 修改, cat 查看冲突文件.(注意要删除 Git 自动生成的冲突代码分隔符)
(5)完成冲突解决
注: 提交或者合并都会生成 Git 节点. 每个节点对应一个代码版本.
来源: https://www.jb51.net/article/191653.htm