git报错:“fatal:refusing to merge unrelated histories“

曂沅仴駦  论坛元老 | 2025-3-29 19:59:43 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1713|帖子 1713|积分 5139

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
新建堆栈,克隆本地项目到新堆栈,初次同步本地已提交的代码到远程时,报错:"fatal:refusing to merge unrelated histories" 。
报错意思是:致命的:拒绝合并无关的汗青。 
一、题目配景:

Git 在合并分支时,会检查两个分支是否有共同的祖先(即它们是否来自同一个代码库)。假如没有共同祖先,Git 会认为这两个分支是“无关的汗青”,并拒绝合并,以制止不测覆盖或辩论。
这种环境可能发生在以下场景中:

  • 克隆了一个新的堆栈,然后尝试将本地分支推送到远程堆栈。
  • 合并了来自不同堆栈的分支
  • 使用了 git pull 操作,但本地和远程分支没有共同的提交汗青。
 二、办理方法

方法 1:强制合并(不推荐)

假如你确定两个分支的内容是安全的,并且没有辩论,可以使用 --allow-unrelated-histories 选项强制合并:
  1. git pull origin <branch-name> --allow-unrelated-histories
复制代码
或者:
  1. git merge <branch-name> --allow-unrelated-histories
复制代码
 我是用了上面的方法,因为确保两个汗青都是安全的。如下:
  1. git pull origin master --allow-unrelated-histories
复制代码
 留意:这种方法会直接合并两个分支的内容,可能会导致不测的辩论或覆盖。使用时需审慎。
方法 2:重新初始化本地堆栈

假如你的本地堆栈是新创建的,并且没有重要提交,可以尝试重新初始化本地堆栈:

  • 删除本地堆栈(保留重要文件)。
  • 重新克隆远程堆栈:
    1. git clone <remote-repo-url>
    复制代码
方法 3:创建一个新的分支
假如你的本地分支有重要代码,但没有共同祖先,可以尝试以下步调:

  • 创建一个新的分支,基于远程堆栈的当前分支:
    1. git checkout <remote-branch-name>
    2. git checkout -b <new-branch-name>
    复制代码
  • 将本地分支的更改手动复制到新分支中。
  • 提交更改并推送到远程堆栈。
方法 4:使用 git rebase

假如你希望将本地分支的更改应用到远程分支上,可以尝试使用 git rebase:

  • 切换到本地分支:
    1. git checkout <local-branch-name>
    复制代码
  • 将远程分支作为基础进行变基:
    1. git rebase <remote-branch-name>
    复制代码
  • 假如出现辩论,办理辩论后继续变基:
    1. git rebase --continue
    复制代码
  • 完成后推送更改:
    1. git push origin <local-branch-name>
    复制代码
方法 5:检查远程堆栈的 URL

假如你的本地堆栈和远程堆栈不匹配,可能是远程堆栈的 URL 错误。可以通过以下命令检查和更新远程堆栈的 URL:
  1. git remote -v
  2. git remote set-url origin <correct-remote-repo-url>
复制代码
三、总结

“拒绝合并无关的汗青” 是 Git 在合并无共同祖先的分支时的掩护机制。根据你的需求,可以选择强制合并、重新初始化堆栈、创建新分支或使用变基等方法办理题目。假如不确定操作的结果,建议先备份重要代码,制止数据丢失。
 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曂沅仴駦

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表