互聯網直播點播平臺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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章