互联网直播点播平台EasyDSS使用Git多人开发报refusing to merge unrelated histories错误

用过我们EasyDSS直播点播平台的用户们都知道,我们提供一站式的转码、点播、直播、时移回放服务,极大地简化了开发和集成的工作。同时也提供丰富的二次开发接口,基于JSON的封装及HTTP调用。
EasyDSS.png

我们的研发人员最近在使用Git作为版本控制系统进行多人开发,Git便捷实用,实现了离线开发、代码审核特性,解决了跨地域协同开发中代码质量和编码协同的问题,并且分支管理功能强大,便于查询和追溯分支间的提交历史。

Git 出现 fatal: refusing to merge unrelated histories 错误

在我们开发DSS过程中,使用 Git 作为版本控制系统拉取远程仓库中的代码时,突然出现 “fatal: refusing to merge unrelated histories”,无法合并代码。

原因分析

此种错误提示代表本地分支和远程分支无关联关系。当本地库尝试从远端库拉取代码尝试合并时,因为本地库同远端库无关联,所以提示无法合并。但是为什么会突然出现这种问题?

目前已确认本地库和远程库的代码是一致的,在合并代码前另一开发人员推送了一次开发代码,因此怀疑为此次推送导致的远程库与本地库无关联。

同时,另一开发人员确认 Git 操作,其使用的是 Git Extensions 进行的 Git 操作,笔者使用的是 TortoiseGit 进行的 Git 操作,两者底层的部分命令可能不同,最终导致本地库和远程库无关联了。

解决办法

对此我们提供了两种解决办法:

解决办法一:

  1. 重新下载一次远程代码到本地;
  2. 将修改的代码,写入到1中下载的本地库中,然后提交,
    此种解决办法为更新代码,无合并操作。

解决办法二:

使用强制合并命令,将两个仓库进行合并。

git pull origin master --allow-unrelated-historie 

上述命令中的–allow-unrelated-historie 代表强制合并两个分支。
强制合并操作必须在确认两个分支合并无问题的情况下使用,如果无法确定合并是否会出问题,请使用办法一解决此问题。

DSS8.png

猜你喜欢

转载自blog.csdn.net/EasyDSS/article/details/106833629