git报错:refusing to merge unrelated histories

错误1(src refspec master does not match any)

直接上图
错误信息
情景:

  • 码云上刚刚创建一个新的仓库,然后本地也新建一个仓库,然后关联远程库

  • git remote add origin [email protected]:michaelliao/learngit.git
    
  • 此时工作区有个修改没有add

  • 直接 git push -u orign master 报这个错误

如何解决:

  • add 然后 commit这个错误就会消失
  • 但是此时出现了新的错误,见下图错误2

错误2(Updates were rejected because the remote contains…)

错误2
大概意思:远程库里面的一些文件你的本地库没有,你要先pull下来

情景:

  • 检查过后发现远程库确实比本地库多个一个readme.md

解决:

  • 执行 git pull origin master ,然后问题。。。果然没有解决,出现新的错误,见下图

错误3(refusing to merge unrelaed histories)

错误3
大概意思:拒绝合并两个无关的历史。虽然你关联起来了,但是你的远程库和本地库的文件不同,他就认为你是俩个无关的库,然后拒绝合并

解决方法有2种
第一种:

  • 直接克隆远程的库,因为刚创建是一个空的库,克隆到本地也是空的。然后把你的项目代码复制进去,然后你就推送和拉取就都正常了。
  • 这样做了之后,你的本地库就相当于是基于你的远程库,他们就建立的联系
  • 我比较喜欢这种方法,你直接使用这种方法,你都不会碰到上面的第二个错误

第二种

  1. 使用命令git pull origin master --allow-unrelated-histories

  2. 后面加上 --allow-unrelated-histories , 把两段不相干的 分支进行强行合并,然后出现下面情况
    消息2
    导致按什么键都不起作用,被锁住了。
    解决方案:
    输入“:wq”,注意是英文输入状态下的冒号,然后按下“Enter”键即可。
    个人多次遇到,特总结下供网友们交流互勉。
    “ :wq”是Linux操作系统命令: 表示强制性写入文件并退出。

  3. 这个时候你会发现已经拉取成功了,你的本地库里面多了readme.md文件

  4. 然后你再推送和拉取就都正常了 git push -u origin master

基于错误2的一次实验

刚才的错误2是由于远程库有文件而你的本地库没有,导致git push 失败
那么这次就创建一个空的远程库
在这里插入图片描述

  1. 创建一个新的远程库,不要勾选readme
  2. 然后会出现以下界面,如果你勾选了readme,下图是不会出现的
    在这里插入图片描述
  3. 创建一个本地库,git init,保证工作区干净的情况下,推送到远程库
  4. git push -u origin master 一次成功

3次错误和1次试验的总结

  • 工作区不干净的情况下,推送会报错
  • 码云上面:如果你要推送一个已存在的本地库到远程库,建议直接创建一个空库,不要有任何文件
  • 使用命令git pull origin master --allow-unrelated-histories 把两段不相干的 分支进行强行合并
  • 如果git界面锁了,输入“:wq”(英文输入状态下的冒号),然后按下“Enter”键即可。
发布了32 篇原创文章 · 获赞 0 · 访问量 999

猜你喜欢

转载自blog.csdn.net/weixin_42588966/article/details/103216309