Git代码冲突


最近在使用SVN版本管理碰到了一点 冲突问题,就想测试一下Git的代码冲突。
冲突的文件什么情况会发生冲突冲突的解决方法等等

测试用例

1、新建一个码云仓库(因为码云比GitHub快,所以用码云做测试),并准备a.txt文件做用例
2、使用两个两个账户(A和B)对a.txt进行拉取,并同时修改
3、B先修改内容;A不拉取新的代码就进行提交
4、冲突

在这里插入图片描述

结果

B账户能顺利的提交代码,但是A显示冲突

在这里插入图片描述

在这里插入图片描述

此时,我们肯定想下意识的拉取最新的代码;但是拉下来,发现命令行多了一个merging的表示,并且内容很奇怪:
在这里插入图片描述
在这里插入图片描述

解决方案一

步骤

1、把冲突的文件复制出去
2、查看历史版本,选择冲突的上一版本进行回退
3、拉取最新的代码
4、将复制出去的文件代码打开,找到冲突的部分在最新的版本的代码上复原
5、提交

图例

查看历史版本,并选择回退
在这里插入图片描述

拉取最新的代码
在这里插入图片描述

重新修改,并提交文件
在这里插入图片描述

在这里插入图片描述

冲突文件中多出来的东西是啥

为了查看冲突中多出来的是啥,我们在进行一组冲突测试;
当前文件内容:
在这里插入图片描述

B账号提交后的内容
在这里插入图片描述

A想要提交的内容:
在这里插入图片描述

冲突后:
在这里插入图片描述

在这里插入图片描述

我们回退后重新提交,然后看版本;于是我们可以进行大胆的试验
在这里插入图片描述

解决冲突方案二

步骤

1、冲突后,复制文件出去
2、直接根据冲突文件中的版本号,回退到冲突文件的版本号
3、将原文件和回退文件进行整合

图例

B账户又进行新增提交
在这里插入图片描述

A账户还是老样子

在这里插入图片描述

冲突后的内容

在这里插入图片描述

直接回退到冲突代码中的指定版本号

在这里插入图片描述

基于此版本进行修改提交

在这里插入图片描述

错误示范

有些小伙伴肯定想冲突了把冲突的地方删掉然后在提交,那肯定是不行的

在这里插入图片描述

未提交拉取最新代码

之前就好奇,一遍写代码一遍拉取最新的代码会怎样呢?
并且拉取的最新的代码改动的就是我们正在写的这个代码。
还是来测试一下

事前准备

清空文件内容,重新进行测试。
在这里插入图片描述

测试中

先让B提交代码,A正常写代码

注意,A是基于原先旧版本进行写代码

在这里插入图片描述

此时,让A来拉取最新的代码;看看有什么变化

在这里插入图片描述

按照他的意思,提交修改,发现代码果然又冲突了
在这里插入图片描述

解决方案

上网看了一下一些方案,下面两个

git reset 进行强制覆盖

这个跟前面解决冲突的思想一样。

  • 复制当前文件
  • 回退版本
  • 重新拉取
  • 结合修改
git stash

1、回到初始状态;B提交了代码,A在写代码
在这里插入图片描述
2、A拉取最新代码
在这里插入图片描述

3、执行提示的stash命令
在这里插入图片描述
4、git pull拉取最新代码
在这里插入图片描述
5、git stash pop复原本地代码
在这里插入图片描述
6、删掉标识符,重新推送代码
在这里插入图片描述

原理:貌似是一个栈结构,用于记录用户操作数据;可以进行一个暂存的操作,具体后续有时间会继续研究。

结论

还是会发生代码冲突,在实际开发中;还需要借助分支管理,还需要会解决Git冲突问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值