文章目錄
- 一、問題
- 二、解決辦法
- 1、將feature分支的東西追加到master分支中
- 2、將feature里的東西直接覆蓋到master分支中
一、問題
今天將feature分支合并到master時報錯:refusing to merge unrelated histories(拒絕合并無關歷史)
報錯原因:當嘗試從遠程倉庫"gitee.com:zpg13/system_school"的master分支拉取最新更新并合并到本地的master分支時,Git拒絕了這次合并,原因是兩個分支擁有不相關的歷史記錄。
二、解決辦法
1、將feature分支的東西追加到master分支中
這種方法會保留master分支里原本的內容,并且 future的歷史記錄 會 合并到 master的歷史記錄中
步驟:
首先切換到master分支
git checkout master
然后在執行merge指令的時候添加上: --allow-unrelated-histories 參數
git merge feature --allow-unrelated-histories
執行
git merge feature --allow-unrelated-histories
命令后,可能會出現以下界面:Git要求您提供一個提交消息來解釋為什么這次合并是必要的。請在編輯器中輸入您想要的提交消息,然后按
Esc
鍵退出編輯模式,再按:wq
輸入并按Enter
鍵保存并退出Vim編輯器。如果您不想進行任何合并操作,只需按Esc
鍵退出編輯模式,然后在命令行中輸入:q
并按Enter
鍵退出Vim編輯器。請注意,如果存在合并沖突,您需要先解決這些沖突,然后再繼續合并操作。
此時就會提示合并成功,然后正常推送到遠程分支即可
2、將feature里的東西直接覆蓋到master分支中
這種方法會丟失master中的所有數據,并且將feature中的歷史記錄同步到master的歷史記錄中
先來看看合并前feature的歷史記錄:
然后再看看合并前master的歷史記錄:
合并過程:
首先切換到master分支
git checkout master
然后使用以下命令進行合并
git reset --hard origin/feature
再次查看master分支的日志時可以發現,master中的歷史記錄已經替換成了feature的歷史記錄
然后推送的時候使用 -f 參數,強推到遠程倉庫即可
git push origin master -f