【学习:git使用二】

1、远程(多人)协作【下】

1.1 本地开发

模拟2个用户(开发者), 开发一个项目

第一个是:odshen1 开发者
第二个是:odshen2 开发者
图片: 蓝色背景是 odshen1,粉红色背景是 odshen2 ,黑色背景是远程公共版本库 zhangsan

注意:接着【学习:git使用一】 最后克隆到本地版本库目录 shop 和 othershop
这里写图片描述
2、在shop下创建 odshen1 开发者,和other下创建 odshen2开发者

shop目录下

> git config --local user.name "odshen1"
> git config --local user.email"odshen1@163.com"
othershop目录下
> git config --local user.name "odshen2"
> git config --local user.email"odshen2@163.com"

3、odshen1 本地开发在shop下编辑开发代码,然后提交版本(本地编写代码,本地版本库提交)

这里写图片描述
此时odshen1的提交版本与远程版本库 zhangsan 毫无关系

4、odshen2 本地开发在othershop下编辑开发代码,然后提交版本(本地编写代码,本地版本库提交)

这里写图片描述
此时odshen2 的提交的版本与远程版本库 zhangsan 也毫无关系
此时 odshen1 和 odshen2 也没有联系

1.2 推送到远程(公共版本库) git push

5、odshen1 在shop下开始推送代码到远程公共版本库 zhangsan
> git push origin master
这里写图片描述
远程版本库zhangsan收到 odshen1 提交的代码
这里写图片描述

1.3 从远程(公共版本库)拉取 git pull

6、odshen2 在othershop下先拉取再推送代码到远程公共版本库 zhangsan
> git pull // 语法
[odshen2 后于 odshen1 开发完成, 此时 odshen1 已经将代码推送到远程公共版本库) ]
odshen2 该怎么做?
因为此时远程已经出现了 odshen2不确定的内容( odshen1推送的代码)

做法:1、odshen2先将远程代码拉取到本地,与 odshen2 的本地代码合并后
2、odshen2 再去推送

注意:
git 会自动完成合并,前提是没有解决不了的冲突;合并后会形成一个新的版本,提供 vim去编写版本描述


正常情况

> git pull 之后拉取文件,git自动合并,弹出一个vim编辑框,编辑合并版本信息

错误情况

> git pull 之后报错,表示拒绝合并不相关的历史
这里写图片描述
解决办法:
> git pull --allow-unrelated-histories
这里写图片描述
就可以弹出vim编辑器编辑合并版本信息 – 编辑版本描述后,保存退出 :wq , 即可自动提交一个自动合并的版本
这里写图片描述
这里写图片描述
这里写图片描述

7、 odshen2 再推送到远程

这里写图片描述
去远程版本库 zhangsan 查看 git log ,与最后推送的版本保持一致
这里写图片描述

1.4 手动解决冲突

场景: odshen1先编辑并上传一份代码到远程公共版本库(如:config.php),odshen2 也编辑一份相同文件名的代码,将要上传(如:config.php)
问题来了?
odshen2从远程版本库拉取代码(此时odshen1的 config.php已经上传),进行本地合并,但是出现 相同的 config.php 文件内容冲突不一致
怎么解决?
odshen2 进行 > vim config.php 文件,找到 git 给出冲突地方相应的版本号,odshen2拿着该版本号去远程公共版本库服务器确认另外一个开发者(查出是odshen1),然后协商最终代码, odshen2再把最终代码编辑完成然后上传到远程版本库

以上场景实现如下

# odshen1 开发

odshen1编辑提交 config.php代码到远程版本库
这里写图片描述
这里写图片描述
推送到远程, 推送前先拉取, 自动解决冲突合并
这里写图片描述
此时远程版本库
这里写图片描述

# odshen2 开发
odshen2也编辑同样的 config.php文件

这里写图片描述
拉取, 此时远程config.php 与本地config.php发生冲突, 不能自动完成
这里写图片描述
需要手动解决冲突!
编辑 config.php
这里写图片描述
这里写图片描述
拿着冲突版本号去远程版本库查询该冲突向外一位开发者是谁,然后协商解决!
额外提示!!! 如果vim下鼠标不能右击复制 ,在普通模式下键入:set mouse-=a【不包括引号)】
这里写图片描述
这里写图片描述
这里写图片描述
odshen2 推送到远程
> git push origin master

查看远程版本库log
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值