[英]I can't push because local repository out of date, but I can't pull the data
您從Terminal進行的git push
失敗:
! [rejected] master -> master (non-fast-forward)
並且您從終端的git pull
失敗並顯示:
fatal: refusing to merge unrelated histories
告訴我們我們需要知道的。 (此外:對於我來說,將它們閱讀為復制粘貼的文本而不是圖像閱讀起來要容易得多。)具體來說, 您已經創建了一個本地存儲庫,該存儲庫與遠程存儲庫完全無關。
當您通過運行git init
在本地啟動新的 Git存儲庫,然后將一些文件添加並提交到新存儲庫中時,就會發生這種情況。 此新存儲庫與現有存儲庫沒有關系。 1
然后,您在本地存儲庫中運行git remote add origin url
,告訴Git您的本地存儲庫與url上的Git存儲庫直接相關。 您的Git相信您。 (這不是達到這一點的唯一方法,但是即使您通過Xcode做到這一點,也可能是您達到這一點的方法。)
一旦您准備好將這兩個不相關的Git互相交談,您就可以讓您的Git呼叫其所謂的兄弟(堂兄?母親?可能是什么)Git並與之交談。 隨着git push
,你的Git表明,他們把你上添加新的提交他們的,但你不添加到他們的,所以他們說: 不,這不是一個快進:您提交不正確有關礦。 使用git pull
,您的Git會獲取他們的提交,然后讓您的Git運行git merge
來將您的提交與其他Git的親屬進行合並。 您的Git說: 哇,等等,這些提交沒有關系! 我不能嫁給這兩個!
有多種解決方法。 使用哪一個取決於原始錯誤是什么。 如果您有最初使用git clone
來克隆到位桶庫,讓你的資料庫有關 ? 還是應該不會創建到位桶儲存庫你的方式,使得初始到位桶倉庫是空的 ,並願意從你的倉庫裝滿,從而成為相關?
找出其中的情況。 然后,在掌握了原始錯誤在哪里的知識之后,回到StackOverflow並搜索如何解決原始錯誤,同時保留到目前為止所做的任何工作。
1注意,一個完全空白的庫,一個沒有提交,也與任何其它庫沒有任何關系,而是因為它是一張白紙,這是完全滿意, 在這一點上任何其他Git倉庫結婚了。 例如,這就是git clone
工作方式:克隆某些現有存儲庫時,首先要創建一個新的完全空的存儲庫。 然后,將它與其他存儲庫(通常稱為origin
)結合使用,通常使用git fetch
和git checkout master
,現在這兩個存儲庫共享其所有master
提交。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.