【Git】merge时报错:refusing to merge unrelated histories

文章目录

一、问题

今天将feature分支合并到master时报错:refusing to merge unrelated histories(拒绝合并无关历史)

报错原因:当尝试从远程仓库"gitee.com:zpg13/system_school"的master分支拉取最新更新并合并到本地的master分支时,Git拒绝了这次合并,原因是两个分支拥有不相关的历史记录。


二、解决办法

1、将feature分支的东西追加到master分支中

这种方法会保留master分支里原本的内容,并且 future的历史记录 会 合并到 master的历史记录中

步骤:

首先切换到master分支

bash 复制代码
git checkout master

然后在执行merge指令的时候添加上: --allow-unrelated-histories 参数

bash 复制代码
git merge feature --allow-unrelated-histories

执行git merge feature --allow-unrelated-histories命令后,可能会出现以下界面:Git要求您提供一个提交消息来解释为什么这次合并是必要的。

请在编辑器中输入您想要的提交消息,然后按Esc键退出编辑模式,再按:wq输入并按Enter键保存并退出Vim编辑器。如果您不想进行任何合并操作,只需按Esc键退出编辑模式,然后在命令行中输入:q并按Enter键退出Vim编辑器。

请注意,如果存在合并冲突,您需要先解决这些冲突,然后再继续合并操作。

此时就会提示合并成功,然后正常推送到远程分支即可


2、将feature里的东西直接覆盖到master分支中

这种方法会丢失master中的所有数据,并且将feature中的历史记录同步到master的历史记录中

先来看看合并前feature的历史记录:

然后再看看合并前master的历史记录:

合并过程:

首先切换到master分支

bash 复制代码
git checkout master

然后使用以下命令进行合并

bash 复制代码
git reset --hard origin/feature

再次查看master分支的日志时可以发现,master中的历史记录已经替换成了feature的历史记录

然后推送的时候使用 -f 参数,强推到远程仓库即可

bash 复制代码
git push origin master -f
相关推荐
ON10N1 小时前
100% 纯 Vibe Coding,我是怎么用 AI 撸出一个 VS Code 插件的
git·ai编程·visual studio code
Lunar*8 小时前
告别臃肿!使用 git-filter-repo 优雅清理 Git 历史记录
git
tq10868 小时前
agent 记忆 = markdown + json + git
人工智能·git
何以不说话10 小时前
DevOps、Git 和 GitLab
git·gitlab·devops
最最菜的菜鸟11 小时前
本地环境通过 SSH 协议访问 GitHub 上的仓库时,SSH 公钥认证失败,配置 Git SSH 密钥
git·ssh·github
无限进步_1 天前
21. 合并两个有序链表 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
宁静致远20211 天前
STM32CubeMX、MDK(Keil MDK)、git、vscode等工具中统一编码设置(UTF-8),确保中文支持,避免乱码问题
git·vscode·stm32
love530love1 天前
Windows 多 Git 环境冲突:一个环境变量优先级引发的血案
人工智能·windows·git·环境变量·scoop
无限进步_2 天前
面试题 02.04. 分割链表 - 题解与详细分析
c语言·开发语言·数据结构·git·链表·github·visual studio
甲枫叶2 天前
【claude】Claude Code正式引入Git Worktree原生支持:Agent全面实现并行独立工作
java·人工智能·git·python·ai编程