git中不同人修改了同文件的同一区域如何处理
<p><img src="https://bucket-hg.oss-cn-shanghai.aliyuncs.com/img/image-20220425083043985.png" alt="im
目录
[TOC]
1、问题背景
不同人修改了同文件的同一区域如何处理?(工作里这种场景还是挺常见的)
2、开始测试
🍀 首先,2个用户先使用git pull命令把仓库更新下
$ git pull
🍀 xyy用户先把index.html文件修改下:
hg@LAPTOP-G8TUFE0T MINGW64 ~/Desktop/it/01-SuGit/git_learning (feature/add_git_commands)
$ vim index.html
然后提交:
$ git commit -am"Add mv and rm commands"
🍀 同时,xyy02用户也在index.html的相同区域进行了编辑,并提交:
$ vim index.html
提交:
$ git commit -am"Add stash and log commands"
而且,xyy02用户一修改完成就直接push到远端了:
$ git push
🍀 此时,回到xyy用户,他也打算推送到远程仓库,此时看下会发生什么情况
$ git push
发现推送报错。
因为xyy02用户是先提交的,又遇到了不是fast-forwards这种情况了,那么该如何处理呢?
🍀 本次,就不用fetch了,直接用merge。我们push的时候,git会自动用本地分支和远端分支进行比较的,是能感知到的。
如果我们直接使用merge将本地分支和远程分支进行合并的话,会提示一个Already up to date
。
你push的时候报错,说明远端变了,因此,你要先进行一下pull操作。
$ git pull
$ git status
但此时pull也失败了,提示git自动Merge失败,有文件冲突了。
🍀 l那么,此时如何解决冲突呢?有2种方案,一种是命令行的,一种是图形化界面的。本次使用命令行。
vim index.html文件
那么如何在冲突文件里找到冲突位置呢?git提供了一些约束表示,如下:
关于git发生与远端分支冲突时,git自己是无法进行自动合并的,必须需要我们人为介入进去处理。
这里将git冲突时产生的提示符删除,修改需要保留的信息,保存退出:(本次将这4条命令都保存起来)
🍀 现在,我们看下当前git的状态,这里还需要进行一次提交才行:
$ git status
$ git commit -am"Resolved conflict by hand with 4 git commands"
🍀 再看下git status状态:发现是当前仓库是working tree clean的,ok。
🍀 再来看下git版本树:
$ gitk --all
🍀 记得,本地的冲突解决掉之后,我们要及时的把这个commit push到远端去:
$ git push
只有push上去了,其他同学才能拿到我们最新的代码。
🍀 此时,我们再到github上看下现象
🍀 测试,xyy02用户再去git pull下代码,查看下index.html文件,就会发现文件内容已经更新了
测试结束。😘
3、总结
当git开发时,常规操作是2人都先pull远程仓库代码到本地,然后同时编写代码时。但总有一个人先push,然后刚好他们修改的是同一位置代码,因此后面那个人再进行提交时就会报错了。于是需要先在本地解决冲突,然后再进行commit及push操作才行。
关于我
我的博客主旨:我希望每一个人拿着我的博客都可以做出实验现象,先把实验做出来,然后再结合理论知识更深层次去理解技术点,这样学习起来才有乐趣和动力。并且,我的博客内容步骤是很完整的,也分享源码和实验用到的软件,希望能和大家一起共同进步!
各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人免费帮您解决问题:
个人微信二维码:x2675263825 (舍得), qq:2675263825。
个人微信公众号:云原生架构师实战
个人csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421
个人已开源干货😘
不服来怼:宇宙中最好用的云笔记 & 其他开源干货:https://www.yuque.com/go/doc/73723298?#
个人网站:(计划ing)
最后
好了,关于git不同人修改了同文件的同一区域如何处理测试就到这里了,感谢大家阅读,祝大家生活快乐,每天都过的有意义哦,我们下期见!
更多推荐
所有评论(0)