遇一山,过一山,处处有风景;只要勇敢向前,一路尽是繁花盛开。 | (点击查看→)【测试干货】python/java自动化、持续集成、性能、测开、简历、笔试面试等

Git必知必会基础(09):本地冲突(conflicts)解决--merge

 

本系列汇总,请查看这里https://www.cnblogs.com/uncleyong/p/10854115.html

演示场景

在合并分支过程中,可能会遇到冲突,本篇演示用merge解决本地冲突。

基于master主分支,创建两个开发分支dev_1和dev_2,分别做修改:

dev_1第一次修改并提交到本地仓库,然后推送到远程仓库
dev_2第一次修改并提交到本地仓库,然后推送到远程仓库
dev_1第二次修改并提交到本地仓库,然后推送到远程仓库
dev_2第二次修改并提交到本地仓库,然后推送到远程仓库

切换到master,先合并dev_1,没有冲突,然后合并dev_2分支,产生冲突,解决冲突,最后push到远程master分支

 

准备数据 

远程数据

远程commit id

 

克隆到本地

 

创建dev_1分支

 

修改qzcsbj.txt内容,然后提交到本地仓库,最后推送到远程仓库

 

切换到master,创建dev_2分支

 

修改qzcsbj.txt内容,然后提交到本地仓库,最后推送到远程仓库

 

再次切换到dev_1做一次提交

 

再次切换到dev_2做一次提交

 

远程分支内容

 

 

 

合并分支并解决冲突

切换到master,此时无更新,否则需要拉取最新master

 

先合并dev_1,没有冲突

 

然后合并dev_2分支,产生冲突,冲突文件是qzcsbj.txt

 

也可以这样查看冲突的文件:git diff --name-only --diff-filter=U

 

查看分支差异:git diff master dev_2

 

冲突文件内容:

  

HEAD表示当前分支

 

修改冲突文件

 

提交并推送到远程仓库

 

查看分支合并图

git log --graph --oneline

 

git log --graph

 

结论:保留了每个分支的独立性,分支的提交历史可追溯,合并图非线性,如果分支多且合并多,互相交叉,易读性不高

 

分支后续操作

此时分支如果不要了就可以删除

如果要继续在分支在开发,需要同步master分支,rebase即可:

切换到对应分支,使远程库和本地库同步:git pull --rebase origin master

如果有冲突忽略冲突(丢弃当前补丁的重放,即忽略掉当前补丁):git rebase --skip

如果有冲突,强制推送:git push -f origin 当前分支名,如果没有冲突:git push origin 当前分支名

 

下一篇演示分享分支rebase。

 
 
posted @ 2024-01-21 19:34  全栈测试笔记  阅读(1099)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end