git refusing to merge unrelated histories的解決方案(本地/遠程)


一、本地合並時遇到refusing to merge unrelated histories的錯誤

如果git merge合並的時候出現refusing to merge unrelated histories的錯誤,原因是兩個倉庫不同而導致的,需要在后面加上--allow-unrelated-histories進行允許合並,即可解決問題

如果還不能解決問題,就把本地的remote刪除,重新git remote add添加遠程倉庫,再按上面的方法來,問題解決。



 

二、遠程push 的時候出現refusing to merge unrelated histories 

 

本地倉庫在想做同步遠程倉庫到本地為之后本地倉庫推送到遠程倉庫做准備時報錯了,錯誤如下:

fatal: refusing to merge unrelated histories 
(拒絕合並不相關的歷史)

出現這個問題的最主要原因還是在於本地倉庫和遠程倉庫實際上是獨立的兩個倉庫。假如我之前是直接clone的方式在本地建立起遠程github倉庫的克隆本地倉庫就不會有這問題了。

查閱了一下資料,發現可以在pull命令后緊接着使用--allow-unrelated-history選項來解決問題(該選項可以合並兩個獨立啟動倉庫的歷史)。
 

解決:
 
$git pull origin master –allow-unrelated-histories
 
以上是將遠程倉庫的文件拉取到本地倉庫了。 
緊接着將本地倉庫的提交推送到遠程github倉庫上,使用的命令是:
 
$ git push <遠程主機名> <本地分支名>:<遠程分支名>
也就是
$git push origin master:master
提交成功。
 

GitPushRemote

pull
git pull 命令基本上就是 git fetch 和 git merge 命令的組合體,Git 從指定的遠程倉庫中抓取內容,然后馬上嘗試將其合並進你所在的分支中。

從遠程倉庫中獲得數據,可以執行:

$ git fetch [remote-name]


這個命令會訪問遠程倉庫,從中拉取所有你還沒有的數據。 執行完成后,你將會擁有那個遠程倉庫中所有分支的引用,可以隨時合並或查看。

但是注意的是 git fetch 並不會自動合並或修改你當前的工作。 當准備好時你必須手動將其合並入你的工作。

如果你使用 clone 命令克隆了一個倉庫,命令會自動將其添加為遠程倉庫並默認以 “origin” 為簡寫。 所以,git fetch origin 會抓取克隆(或上一次抓取)后新推送的所有工作。

由於fetch命令后還要再做一步merge命令的操作,所以使用 git pull 命令來自動的抓取然后合並遠程分支到當前分支。 (相當於一次執行fetch加merge命令)這可能會是一個更簡單或更舒服的工作流程。
 

finish!兩種問題的綜合解決


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM