赞
踩
小张和阿亮2人git协作时,先git pull一下,获取最新的代码!
然后小张修改了代码,将本地仓库改为v2,提交到远程仓库,将远程仓库也改为v2!
问题: 在小张从v1变为v2,并将代码推送到远程仓库时,别人也可能更新了代码!比如阿亮将本地仓库代码改为V3,现在准备push到远程时就是出错,因为远程此时为V2,而阿亮是在V1的基础上进行修改的!
也有可能啊亮先更新代码为V3,此时小张也更新了代码,但是此时远程仓库已经变为V3了,小张还是在V1的基础上更新的代码,怎么办?
如果小张直接将V2代码推上去,结果就是V3的代码全没了!
现在这种情况想直接推送V2到远程仓库时推送不了的!
先git pull
从远程仓库更新最新代码下来!
小张在Win10上操作:
修改代码!
将代码添加到本地仓库中:
项目组可能有很多人,在小张还没有将本地修改的代码推送到远程仓库时,就已经将自己修改的代码推送到远程上去了!(这里在ubuntu演示啊亮操作)
阿亮将工作区修改的代码推送本地仓库!
注意阿亮也是就与V1版本的仓库修改的!
阿亮推送也是没有问题的!
现在本地仓库和远程仓库都是在啊亮提交的代码版本V3上:
记着我们小张再操作自己的V2版本代码!
小张将V2版本的代码推送到远程仓库中:
出现错误!
现在想把本地仓库的代码推送到远程仓库上去,不行,因为本地代码是基于V1代码修改的!现在远程仓库已经是啊亮提交的V3版本的代码了!不可能直接将V2版本的代码放上去,会将V3版本弄丢的!
V2版本应该基于V3版本进行修改!
解决方法:
我们可以看到在提交代码失败时,系统提醒我们更新下代码,从远程仓库中重新拉取:
在更新代码的同时,自动进行了代码的合并!
因为这两处修改的地方不是一个地方,在合并时,git就直接进行合并了!
合并之后,直接推送到远程仓库即可:
阿亮再git pull
,可以拿到合并后的代码:
可以看到此时本地仓库和远程仓库都位于合并代码处!
另外一种冲突:需要手动解决
小张和阿亮改同一个地方!
原始的:
小张修改代码:
git diff HEAD -- 查看工作区file文件和仓库中该文件最新版本的代码有什么区别
可以查看工作区修改的文件和远程仓库有什么区别:
红色-: 表示原来的代码;
绿色+: 表示修改的绿色代码;
小张接着将其提交到本地仓库中:
此时本地仓库时先与远程仓库的,可以直接push上去:
但是,现在还没有push到远程仓库!
阿亮接着修改代码:
也在sort函数中添加了算法优化代码!
查看其和远程仓库的区别代码:
阿亮将代码提交到本地仓库:
阿亮将代码push到远程仓库:是Ok的!
问题:
此时小张的代码还没有提交,它是基于仓库最开始的代码V1开始的,它自己是V2;
但是此时阿亮将自己的V3代码提交到远程仓库中了!
此时小张要是push代码代码到远程仓库,会发生冲突!
小张git pull
将最新的代码拉下来!
也是会进行了一个自动的代码合并!
检查下自动合并的代码是否正确:
此时是没有问题的,可以自动合并,因为改的不是同一个地方;
可以push上去了:
这里老师举例差评,没有体现要自己手动修改的案例!
重新演示:
git pull
,让两个人的代码都是最新的!
小张在README文件中修改:
小张将工作区的文件添加到本地仓库!还没有推送到远端!
阿亮现在修改代码:
和小张在同一个地方进行修改!
阿亮直接将代码提交到远程仓库中!
小张再进行push时,会出错:
现在再git pull,发现自动合并代码失败:(因为是修改的同一处代码,不知道如何合并!)
提示我们 需要手动解决冲突!
查看下现在的README文件:
commit ID就是其他人修改的,可以使用git log 进行查看,就是阿亮提交的!
手动进行修改合并:
然后进行提交:
OK了!
远程仓库OK的!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。