16.7Git版本控制(7):解决冲突

@概述

  • 当团队的两个不同成员A、B修改了同一文件的相同代码段并且改动不一致时,就形成了冲突;
  • 在合并A、B二人的代码时,冲突就会爆发,必须先解决冲突,才能完成代码的合并工作;
  • 冲突情形1:主分支合并AB二人的分支——主分支必须先解决冲突才能完成合并;
  • 冲突情形2:A完成push后,B拉取A的分支——B必须先解决冲突才能完成对A的拉取;
  • 冲突情形3:AB工作在同一分支(远程仓库已经同时持有了AB的公钥),A先push,B再push——B必须先解决冲突才能完成push的工作;
  • 解决冲突时版本控制系统的重要组成部分;
  • 冲突的解决方式是:删除冲突标记,然后将冲突部分的代码修改为意见一致的版本;

@冲突案例

  • dev提交公共资源,后续由张全蛋和穆铁柱做出不一致的修改;
  • 张全蛋拉取并修改公共资源
  • 张全蛋提交并push分支
  • 穆铁柱拉取并修改公共资源,意见与张全蛋不一致
  • 穆铁柱提交并push分支,由于二人不在同一分支,此时冲突是不会爆发的,穆能够完成push动作;
  • dev先合并张全蛋分支
  • dev再合并穆铁柱分支,此时冲突会爆发,因为张穆二人意见不一致,无法完成合并;
  • dev处理冲突:删除冲突标记、然后将代码修改为一个能够取得统一意见的版本;
  • dev提交并push分支

@完整模拟过程


# dev提交公共资源
git checkout dev
git add best.py
git commit best.py -m 'dev提交公共资源best.py:“php是世界上最美丽的语言”'

# 张全蛋修改公共资源后push到自己的分支
git checkout zqd
git pull origin master
git add best.py
git commit best.py -m '张全蛋提交公共资源best.py:“张全蛋的php是世界上最美丽的语言”'
git push origin zqd

# 穆铁柱修改公共资源后也push到自己的分支,但意见与张全蛋不一致
git checkout mtz
git pull origin master
git add best.py
git commit best.py -m '穆铁柱提交公共资源best.py:“穆铁柱的php是世界上最美丽的语言”'
git push origin mtz



# dev试图合并张穆二人的分支
git checkout dev

# 合并张全蛋的分支,没有问题
git merge zqd

# 合并穆铁柱的分支,冲突爆发,必须先将best.py修改为意见一致的版本才能完成合并
git merge mtz

# dev修改了best.py为新的统一版本

# dev提交并push解决冲突后的best.py
git add best.py
git commit best.py -m 'dev提交公共资源best.py,解决了张穆冲突:“张全蛋和穆铁柱一起php是世界上最美丽的语言”'
git push origin dev

best.py的演化过程是下面这样的


# dev提交时的best.py
print('php是世界上最美丽的语言')


# 张全蛋push在自己分支上的的best.py
print('张全蛋的php是世界上最美丽的语言')


# 穆铁柱push在自己分支上的的best.py
print('穆铁柱的php是世界上最美丽的语言')


# dev合并了张分支后再合并穆分支时的best.py,代码以外的特殊标记就是系统所加的冲突标记
<<<<<<< HEAD
print('张全蛋的php是世界上最美丽的语言')
=======
print('穆铁柱的php是世界上最美丽的语言')
>>>>>>> mtz


# dev删除标记,统一意见后的best.py
print('张全蛋和穆铁柱一起php是世界上最美丽的语言')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搬砖的乔布梭

你好我是秦始皇转世,资助请从速

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值