用過我們EasyDSS直播點播平臺的用戶們都知道,我們提供一站式的轉碼、點播、直播、時移回放服務,極大地簡化了開發和集成的工作。同時也提供豐富的二次開發接口,基於JSON的封裝及HTTP調用。
我們的研發人員最近在使用Git作爲版本控制系統進行多人開發,Git便捷實用,實現了離線開發、代碼審覈特性,解決了跨地域協同開發中代碼質量和編碼協同的問題,並且分支管理功能強大,便於查詢和追溯分支間的提交歷史。
Git 出現 fatal: refusing to merge unrelated histories 錯誤
在我們開發DSS過程中,使用 Git 作爲版本控制系統拉取遠程倉庫中的代碼時,突然出現 “fatal: refusing to merge unrelated histories”,無法合併代碼。
此種錯誤提示代表本地分支和遠程分支無關聯關係。當本地庫嘗試從遠端庫拉取代碼嘗試合併時,因爲本地庫同遠端庫無關聯,所以提示無法合併。但是爲什麼會突然出現這種問題?
目前已確認本地庫和遠程庫的代碼是一致的,在合併代碼前另一開發人員推送了一次開發代碼,因此懷疑爲此次推送導致的遠程庫與本地庫無關聯。
同時,另一開發人員確認 Git 操作,其使用的是 Git Extensions 進行的 Git 操作,筆者使用的是 TortoiseGit 進行的 Git 操作,兩者底層的部分命令可能不同,最終導致本地庫和遠程庫無關聯了。
對此我們提供了兩種解決辦法:
解決辦法一:
- 重新下載一次遠程代碼到本地;
- 將修改的代碼,寫入到1中下載的本地庫中,然後提交,
此種解決辦法爲更新代碼,無合併操作。
解決辦法二:
使用強制合併命令,將兩個倉庫進行合併。
git pull origin master --allow-unrelated-historie
上述命令中的–allow-unrelated-historie 代表強制合併兩個分支。
強制合併操作必須在確認兩個分支合併無問題的情況下使用,如果無法確定合併是否會出問題,請使用辦法一解決此問題。