2016-07-07 87 views
64

我正在學習git,並且我正在關注Git社區書籍。試圖從我的Github存儲庫中提取文件:「拒絕合併不相關的歷史」

之前(很久以前)我在Github上製作了一個公共倉庫,附帶一些文件。現在,我在當前的計算機上設置了一個本地Git存儲庫,並提交了一些文件。然後我添加了一個遠程指向我Github的頁面:

[[email protected] c]# git remote add learnc https://github.com/michaelklachko/Learning-C 

這似乎是成功的:

[[email protected] c]# git remote show learnc 
* remote learnc 
    Fetch URL: https://github.com/michaelklachko/Learning-C 
    Push URL: https://github.com/michaelklachko/Learning-C 
    HEAD branch: master 
    Remote branch: 
    master tracked 
    Local ref configured for 'git push': 
    master pushes to master (local out of date) 

現在我想從我的GitHub庫的文件下載到我的電腦。我這樣做:

[[email protected] c]# git fetch learnc 
[[email protected] c]# git merge learnc/master 
warning: refname 'learnc/master' is ambiguous. 
Already up-to-date. 

但是,我沒有看到我的本地目錄中有任何新文件。我怎樣才能得到它們?

我也試着這樣做:

[[email protected] c]# git pull learnc master 
From https://github.com/michaelklachko/Learning-C 
* branch   master  -> FETCH_HEAD 
fatal: refusing to merge unrelated histories 

順便說一句,在當地我在主分支(沒有其他分支機構):

[[email protected] c]# git status 
On branch master 
nothing to commit, working directory clean 
+2

當你設置你的本地倉庫時,你克隆了你的Github倉庫還是隻是做了'git init'?在後一種情況下,這些回購是無關的(沒有共同的提交),你不能合併它們(拉取取+合併)。 – Paul

+0

我做了git init。那麼我應該克隆我的Github倉庫解決這個問題嗎? – MichaelSB

+0

你可以克隆你的Github倉庫並繼續使用它,但它仍然是單獨的倉庫。你想合併兩個不相關的歷史嗎? – Paul

回答

45
git checkout master 
git merge origin/master --allow-unrelated-histories 

解決衝突,然後

git add -A . 
git commit -m "Upload" 
git push 
7

如果沒有實質性的歷史上的一端(又名如果它僅僅是一個單一的自述提交在github上結束),我經常發現它更容易自述手動複製到我的本地回購,並做一個git push -f使我的版本成爲新的根提交。

我覺得它稍微簡單一點,不需要記住一個隱蔽的標誌,並且保持歷史更清晰。

15

雖然我全力解決人們的工作問題,但我不認爲「推 - 力」或「--allow_unrelated_histories」應作爲一般解決方案教給新用戶,因爲他們可能會對存儲庫造成嚴重破壞當一個人不明白爲什麼事情不起作用的時候使用它們。

當你遇到這樣的情況時,你開始使用本地存儲庫,並且希望在GitHub上創建一個遠程來分享你的工作,但有一點需要注意。

當您創建新的聯機存儲庫時,有一個選項「使用自述文件初始化此存儲庫」。如果您閱讀了精美版本,則說「如果您要導入現有存儲庫,請跳過此步驟。」

您可能已勾選該框。或者類似地,您在嘗試進行初始推送之前在線進行了添加/提交。會發生什麼是你在每個地方創建一個獨特的提交歷史記錄,如果沒有Nevermore的答案中提到的特殊限額(因爲git不希望你以這種方式操作),他們不能對帳。您可以按照這裏提到的一些建議,或者更簡單的就是在下次想要將一些本地文件鏈接到一個全新的遠程時不檢查該選項;保持遙控器清潔以進行最初的推動。

參考資料:我第一次使用git + hub的經驗是遇到同樣的問題,並進行大量的學習來了解發生了什麼以及爲什麼。

0

當您將遠程URL設置爲錯誤的名稱時,您也會看到此錯誤!檢查您是否已正確設置遠程網址。

相關問題