git中不同人修改了同文件的同一区域如何处理

image-20220425083043985

目录

[TOC]

1、问题背景

不同人修改了同文件的同一区域如何处理?(工作里这种场景还是挺常见的)

2、开始测试

🍀 首先,2个用户先使用git pull命令把仓库更新下

$ git pull

image-20220425080134536

image-20220425080144890

🍀 xyy用户先把index.html文件修改下:

hg@LAPTOP-G8TUFE0T MINGW64 ~/Desktop/it/01-SuGit/git_learning (feature/add_git_commands)
$ vim index.html

image-20220425080347392

然后提交:

$ git commit -am"Add mv and rm commands"

image-20220425080544150

🍀 同时,xyy02用户也在index.html的相同区域进行了编辑,并提交:

$ vim index.html

image-20220425080709647

提交:

$ git commit -am"Add stash and log commands"

image-20220425080834025

而且,xyy02用户一修改完成就直接push到远端了:

$ git push

image-20220425081016274

🍀 此时,回到xyy用户,他也打算推送到远程仓库,此时看下会发生什么情况

$ git push

image-20220425081156872

发现推送报错。

因为xyy02用户是先提交的,又遇到了不是fast-forwards这种情况了,那么该如何处理呢?

🍀 本次,就不用fetch了,直接用merge。我们push的时候,git会自动用本地分支和远端分支进行比较的,是能感知到的。

如果我们直接使用merge将本地分支和远程分支进行合并的话,会提示一个Already up to date

你push的时候报错,说明远端变了,因此,你要先进行一下pull操作。

$ git pull
$ git status

image-20220425081616184

但此时pull也失败了,提示git自动Merge失败,有文件冲突了。

🍀 l那么,此时如何解决冲突呢?有2种方案,一种是命令行的,一种是图形化界面的。本次使用命令行。

vim index.html文件

那么如何在冲突文件里找到冲突位置呢?git提供了一些约束表示,如下:

image-20220425081735253

关于git发生与远端分支冲突时,git自己是无法进行自动合并的,必须需要我们人为介入进去处理。

这里将git冲突时产生的提示符删除,修改需要保留的信息,保存退出:(本次将这4条命令都保存起来)

image-20220425081820426

🍀 现在,我们看下当前git的状态,这里还需要进行一次提交才行:

$ git status
$ git commit -am"Resolved conflict by hand with 4 git commands"

image-20220425081943975

image-20220425082119868

🍀 再看下git status状态:发现是当前仓库是working tree clean的,ok。

image-20220425082156542

🍀 再来看下git版本树:

$ gitk --all

image-20220425082312190

🍀 记得,本地的冲突解决掉之后,我们要及时的把这个commit push到远端去:

$ git push

image-20220425082506500

只有push上去了,其他同学才能拿到我们最新的代码。

🍀 此时,我们再到github上看下现象

image-20220425082659739

🍀 测试,xyy02用户再去git pull下代码,查看下index.html文件,就会发现文件内容已经更新了

image-20220425082817238

image-20220425082834570

测试结束。😘

3、总结

当git开发时,常规操作是2人都先pull远程仓库代码到本地,然后同时编写代码时。但总有一个人先push,然后刚好他们修改的是同一位置代码,因此后面那个人再进行提交时就会报错了。于是需要先在本地解决冲突,然后再进行commit及push操作才行。

关于我

我的博客主旨:我希望每一个人拿着我的博客都可以做出实验现象,先把实验做出来,然后再结合理论知识更深层次去理解技术点,这样学习起来才有乐趣和动力。并且,我的博客内容步骤是很完整的,也分享源码和实验用到的软件,希望能和大家一起共同进步!

各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人免费帮您解决问题:

  1. 个人微信二维码:x2675263825 (舍得), qq:2675263825。

    image-20211002091450217

  2. 个人微信公众号:云原生架构师实战

    image-20211002141739664

  3. 个人csdn

    https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

    image-20211002092344616

  4. 个人已开源干货😘

    不服来怼:宇宙中最好用的云笔记 & 其他开源干货:https://www.yuque.com/go/doc/73723298?#

    image-20220424070205366

    image-20220423100718009

  5. 个人网站:(计划ing)

最后

好了,关于git不同人修改了同文件的同一区域如何处理测试就到这里了,感谢大家阅读,祝大家生活快乐,每天都过的有意义哦,我们下期见!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值