[Git] Git pull 時出現 refusing to merge unrelated histories 錯誤訊息?
先前從公司另一個部門,複製了某個 Git 專案 (假設名字叫 remote),
直接上傳成為新的儲存庫 (repo),名字取叫 local,
因此平常要用的時候,就是用 git clone
例如:
git clone https://github.com/test/local.git
不過最近原專案修正了一些 bug,想要從那邊取得修正版程式,
於是用 git remote add
把原本的 remote 專案加成 upstream 來源:
cd local/ git remote add upstream https://github.com/test/remote.git
檢查一下 .git/config 檔,看到我們除了 “origin” 這個來源之外,
確實還有另一個 “upstream” 來源:
testuser@localhost ~/local $ cat .git/config [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [remote "origin"] url = https://github.com/test/local.git fetch = +refs/heads/*:refs/remotes/origin/* [branch "master"] remote = origin merge = refs/heads/master [remote "upstream"] url = https://github.com/test/remote.git fetch = +refs/heads/*:refs/remotes/upstream/*
來試試從 “remote” 這個來源下 git pull
吧:
testuser@localhost ~/local $ git pull upstream master remote: Enumerating objects: 9082, done. remote: Counting objects: 100% (9082/9082), done. remote: Compressing objects: 100% (897/897), done. remote: Total 43205 (delta 8503), reused 8185 (delta 8185), pack-reused 34123 Merge branch 'master' of https://github.com/test/remote Receiving objects: 100% (43205/43205), 2.32 GiB | 7.28 MiB/s, done. Resolving deltas: 100% (33567/33567), done. From https://github.com/test/remote * branch master -> FETCH_HEAD * [new branch] master -> upstream/master fatal: refusing to merge unrelated histories
結果出現了 fatal: refusing to merge unrelated histories 錯誤訊息…
這是為什麼呢?
查了一下,因為目前 local 這個專案,和 remote 這個專案是沒有任何關聯的
(因為我們並不是用 Fork 方式複製專案,而是直接複製原始碼目錄)
想要強制設定的話,要加上 --allow-unrelated-histories
參數,例如:
git pull upstream master --allow-unrelated-histories
成功的話,接下來應該就可以使用像 git cherry-pick
之類的指令,
來把原 remote 專案的修正程式碼取來用囉~
參考資料:第 24 天:使用 GitHub 遠端儲存庫 – 入門篇 — 範例照打無法成功
(本頁面已被瀏覽過 502 次)