使用git pull遇到Automatic merge failed; fix conflicts

SVN
使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡

picture.image 其实完整报错是

picture.image

git 遇到 + 6a78e54…5cfa9dc master -> origin/master (forced update)
Auto-merging app/Http/Controllers/Api/V1/Admin/ConfigController.php
CONFLICT (content): Merge conflict in app/Http/Controllers/Api/V1/Admin/ConfigCo
ntroller.php
Auto-merging app/Http/Controllers/Api/V1/OrderController.php
CONFLICT (content): Merge conflict in app/Http/Controllers/Api/V1/OrderControlle
r.php
Auto-merging composer.json
Auto-merging routes/api.php
Automatic merge failed; fix conflicts and then commit the result.
问题 解决方案

解决 Git 强制更新导致的合并冲突

你遇到的问题是由于远程仓库 (origin/master) 被强制更新 (forced update),而你的本地分支尝试合并时发现了冲突。

问题分析

  1. 远程仓库有人执行了 git push --force 强制覆盖了历史
  2. 你尝试拉取更新时,Git 发现了多个文件的冲突
  3. 自动合并失败,需要手动解决冲突

解决方案

方法1:接受远程更改(放弃本地修改)

如果你想完全接受远程仓库的更改,放弃本地的修改:

git fetch origin
git reset --hard origin/master

⚠️ 警告:这将丢弃你本地所有未提交的更改和提交!

但是 基本上 看哪边最新,按道理 我提交的gitee 最新的 所以采用 不保留本地。

方法2:手动解决冲突(保留本地修改)

如果你想保留本地有价值的修改,需要手动解决冲突:

  1. 首先查看冲突文件状态:
git status
  1. 打开有冲突的文件(如 ConfigController.phpOrderController.php),你会看到类似这样的标记:
<<<<<<< HEAD
你的本地代码
=======
远程代码
>>>>>>> 5cfa9dc...
  1. 编辑文件,决定保留哪部分代码(或合并两者),然后删除冲突标记
  2. 解决完所有冲突后,添加文件并提交:
git add .
git commit -m "解决合并冲突"
  1. 最后推送你的更改(确保没有其他人会受到影响):
git push

方法3:创建新分支保留工作

如果你想更安全地处理:

git checkout -b temp-branch  # 创建新分支保存当前工作
git checkout master
git fetch origin
git reset --hard origin/master  # 重置master到远程状态
# 然后可以cherry-pick或merge temp-branch中的特定提交

预防措施

为避免将来出现类似问题:

  1. 尽量避免使用 git push --force
  2. 如果必须强制推送,确保团队其他成员知道
  3. 考虑使用 git push --force-with-lease 代替强制推送

不过 这个问题 是不可避免遇到的,整体我们知道 gitee上面已经是最新代码了就行,其他同事拉一下就强制覆盖本地。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
DevOps 在字节移动研发中的探索和实践
在日益复杂的APP工程架构下,如何保证APP能高效开发,保障团队效能和工程质量?本次将结合字节内部应用的事件案例,介绍DevOps团队对移动研发效能建设的探索和思考。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论