0 评论

0 收藏

分享

[git相关技术] 使用git pull遇到Automatic merge failed; fix conflicts and then commit the result

使用git pull遇到Automatic merge failed; fix conflicts and then commit the result.解决方案卓伊凡
其实完整报错是
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),而你的本地分支尝试合并时发现了冲突。
问题分析
  • 远程仓库有人执行了 git push --force 强制覆盖了历史
  • 你尝试拉取更新时,Git 发现了多个文件的冲突
  • 自动合并失败,需要手动解决冲突
解决方案方法1:接受远程更改(放弃本地修改)
如果你想完全接受远程仓库的更改,放弃本地的修改:
git fetch origingit reset --hard origin/master
⚠️ 警告:这将丢弃你本地所有未提交的更改和提交!
但是 基本上 看哪边最新,按道理 我提交的gitee 最新的 所以采用 不保留本地。
方法2:手动解决冲突(保留本地修改)
如果你想保留本地有价值的修改,需要手动解决冲突:
  • 首先查看冲突文件状态:
    git status
  • 打开有冲突的文件(如 ConfigController.php 和 OrderController.php),你会看到类似这样的标记:
    <<<<<<< HEAD你的本地代码=======远程代码>>>>>>> 5cfa9dc...
  • 编辑文件,决定保留哪部分代码(或合并两者),然后删除冲突标记
  • 解决完所有冲突后,添加文件并提交:
    git add .git commit -m "解决合并冲突"
  • 最后推送你的更改(确保没有其他人会受到影响):
    git push
方法3:创建新分支保留工作
如果你想更安全地处理:
git checkout -b temp-branch  # 创建新分支保存当前工作git checkout mastergit fetch origingit reset --hard origin/master  # 重置master到远程状态# 然后可以cherry-pick或merge temp-branch中的特定提交预防措施
为避免将来出现类似问题:
  • 尽量避免使用 git push --force
  • 如果必须强制推送,确保团队其他成员知道
  • 考虑使用 git push --force-with-lease 代替强制推送
不过 这个问题 是不可避免遇到的,整体我们知道 gitee上面已经是最新代码了就行,其他同事拉一下就强制覆盖本地。






优雅草论坛2022年8月11日大改,优雅草论坛变回只服务于客户的提问交流论坛,详情查看优雅草8月11日大改,原因详情查优雅草外卖乐关闭

回复

举报 使用道具

全部回复
暂无回帖,快来参与回复吧
yac2025
优雅草的临时工
主题 368
回复 0
粉丝 0