Git 代码提交到远程主分支后发生冲突或者覆盖

当A和B在Git中分别提交并合并代码时,可能导致主分支代码丢失。原因是互相pull对方分支引发冲突。解决方案包括:1)A回滚到未合并前的状态;2)保存新需求代码;3)使用gitreset--hard回滚;4)强制push到远程;5)再次提交并请求merge。此方法适用于解决Git代码冲突问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Git 代码提交到远程主分支后被覆盖(消失)的解决方法:


问题描述

在提交代码的时候,有两个人,比如叫A与B,现在A从远程主分支master拉了代码到自己本地,本地电脑形成local A与local B分支,然后写了自己的需求代码commit并推送到远程仓库,形成自己的origin A与origin B,然后两个人进行合并请求merge request,请求merge后,master主分支里代码少了一部分。

提示:原因是因为两个人分别互相pull了对方远程分支的代码,然后对master分支进行push的时候会发生冲突,导致代码覆盖或其中一个人的代码消失

原因分析:

A与B在某些时刻pull了对方的远程代码仓库,比如A同学 pull了B的远程分支origin B,然后加到了自己的commit里并push到自己的远程仓库,会导致一些代码合并冲突。

下图是Git协作模式工作流,开发人员是不允许互相pull的,只能拉主分支的代码并合并到主分支
git协作模式

解决方案:

以下为解决方案,分为几步进行,比如A同学要解决冲突。

  • 第一步,A回滚本地代码仓库local A到没有pull对方代码的时候,也就是说找到pull origin B的时候的前一次commit的标记点。
  • 第二步,修改代码,把自己的需求代码写入,推送到A的远程分支重新请求合并
    以上两步就可以解决冲突

下面来详细演示下第一步的流程:

  1. 使用git log查看commit日志,找到没有跟别人合并的时候的点

如下图所示,敲入git log命令,并查找到最后一次提交,比如是这个6d27开头的commit id,找到这个id后我们进行回滚,使用git reset命令

在这里插入图片描述
注意!!!! 注意!!!!
在reset前要把自己写的新需求的代码保存到当地,可以保存到记事本或者暂时新建个py文件,因为回滚后新代码就消失了

  1. 先回退本地的这次提交, git reset --hard [commit id]

    在reset前要把自己写的新需求的代码保存到当地,可以保存到记事本或者暂时新建个py文件,因为回滚后新代码就消失了

  2. 将本地修改强制push到远程仓库 git push --force

第二步的流程就跟往常一样了:

第二步就是平常工作时的流程,本地代码回滚后自己写的需求代码消失了,所以需要将自己之前写的 代码写进去—进行commit–然后push—远程仓库请求merge

总结:

好了,这就是git提交发生冲突的时候,一种解决方法思路,如果有碰到相同问题的可以借鉴一下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

乐以礼

您的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值