解決Git?merge時報錯:refusing?to?merge?unrelated?histories問題
一、問題
今天將feature分支合并到master時報錯:refusing to merge unrelated histories(拒絕合并無關(guān)歷史)

報錯原因:
當(dāng)嘗試從遠程倉庫"gitee.com:zpg13/system_school"的master分支拉取最新更新并合并到本地的master分支時,Git拒絕了這次合并,原因是兩個分支擁有不相關(guān)的歷史記錄。
二、解決辦法
1、將feature分支的東西追加到master分支中
這種方法會保留master分支里原本的內(nèi)容,并且 future的歷史記錄 會 合并到 master的歷史記錄中

步驟:
首先切換到master分支
git checkout master
然后在執(zhí)行merge指令的時候添加上: --allow-unrelated-histories 參數(shù)
git merge feature --allow-unrelated-histories
執(zhí)行
git merge feature --allow-unrelated-histories
命令后,可能會出現(xiàn)以下界面:Git要求您提供一個提交消息來解釋為什么這次合并是必要的。
請在編輯器中輸入您想要的提交消息,然后按Esc鍵退出編輯模式,再按:wq輸入并按Enter鍵保存并退出Vim編輯器。
如果您不想進行任何合并操作,只需按Esc鍵退出編輯模式,然后在命令行中輸入:q并按Enter鍵退出Vim編輯器。
請注意,如果存在合并沖突,您需要先解決這些沖突,然后再繼續(xù)合并操作。

此時就會提示合并成功,然后正常推送到遠程分支即可

2、將feature里的東西直接覆蓋到master分支中
這種方法會丟失master中的所有數(shù)據(jù),并且將feature中的歷史記錄同步到master的歷史記錄中
先來看看合并前feature的歷史記錄:

然后再看看合并前master的歷史記錄:

合并過程:
首先切換到master分支
git checkout master
然后使用以下命令進行合并
git reset --hard origin/feature

再次查看master分支的日志時可以發(fā)現(xiàn),master中的歷史記錄已經(jīng)替換成了feature的歷史記錄

然后推送的時候使用 -f 參數(shù),強推到遠程倉庫即可
git push origin master -f
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
TCP協(xié)議詳解_動力節(jié)點Java學(xué)院整理
本文描述了TCP協(xié)議,首先簡單介紹了TCP完成了一些什么功能;介紹了TCP報文格式,以及典型報文的數(shù)據(jù)格式?,F(xiàn)在通過本文給大家詳細介紹,感興趣的的朋友一起看看吧2017-07-07

