我有一個檔案夾,其中包含一些我克隆并對其進行更改的 Git 存盤庫,我正在嘗試將這些存盤庫添加到我擁有的私有存盤庫中,但這就是我得到的:
warning: adding embedded git repository: [my repository]
hint: You've added another git repository inside your current repository.
hint: Clones of the outer repository will not contain the contents of
hint: the embedded repository and will not know how to obtain it.
hint: If you meant to add a submodule, use:
hint:
hint: git submodule add <url> [my repository]
如果我在最初克隆 repos 的 URL 添加子模塊,我會丟失我所做的更改(對嗎?)。那么我輸入什么 URL 以便可以將克隆存盤庫的本地副本添加到我的新存盤庫中?另外,如果我從這些檔案夾中洗掉 .git 檔案并將它們作為常規檔案夾添加到我的存盤庫中會發生什么?這會實作我在這里想做的事情嗎?
uj5u.com熱心網友回復:
我有一個檔案夾,其中包含一些我克隆并對其進行了更改的Git 存盤庫...
如果您對子模塊進行了個人更改(與遠程存盤庫不同的更改),則沒有必要保留它們。
如果您不再希望從這些遠程存盤庫中獲取更改,最好的選擇是.git從這些本地存盤庫中洗掉該檔案夾。由于您的父目錄也是一個 git 存盤庫,因此它將保留這些本地存盤庫中的更改。
另一種選擇是您分叉這些遠程存盤庫并將分叉的存盤庫的 URL 添加為子模塊。然后,您可以將自己的更改推送到您的分叉中。
uj5u.com熱心網友回復:
子模塊只是另一個 Git 存盤庫。
如果您選擇使用子模塊,您的系統上將至少有兩個 Git 存盤庫(讓我們稱其為“您的筆記本電腦”以明確它們的位置)。您的筆記本電腦存盤庫之一可能具有originof ssh://[email protected]/you/yourrepo.git,而另一個(您的子模塊)當前可能具有originof ssh://[email protected]/them/theirrepo.git。
您在超級專案(you/yourrepo.git克隆)中所做的提交包含您的檔案。它們還包含對子模塊中特定提交的參考:筆記本電腦上的另一個克隆。您必須在此克隆中進行提交。
對于克隆ssh://[email protected]/you/yourrepo.git以獲得這些提交的其他人,他們必須克隆第二個 Git 存盤庫。如果您無法將提交推送到ssh://[email protected]/them/theirrepo.git,則需要在某處設定一些 Git 存盤庫,您可以在其中推送您的提交:例如,ssh://[email protected]/you/theirrepo.git 您將在此處推送子模塊提交,以便其他人可以檢索此 Git 存盤庫及其提交從這里。您將更改筆記本電腦子模塊的 URL,以在 GitHub 上找到其“真實來源”副本。
現在每個人都有兩個克隆:他們的克隆ssh://[email protected]/you/yourrepo.git和,通過git submodule update --init,他們的克隆ssh://[email protected]/you/theirrepo.git。因此,ssh://[email protected]/them/theirrepo.git是建立在你的克隆子模塊,當你將列出的URL ssh://[email protected]/you/yourrepo.git。
它變得令人困惑,因為有太多的 Git 存盤庫四處滾動并被左右克隆。每個克隆都有自己的分支名稱和檢出等。感覺不是一件簡單的事情,1克隆單個主存盤庫ssh://[email protected]/you/yourrepo.git,現在到處都是數十種復雜的東西。那是因為有。
這種事情就是很多人避免使用子模塊的原因。這也是一種選擇。您可以洗掉保存子模塊的存盤庫,只保留一個檢出,然后將git add這些檔案放到您的存盤庫中。然后,您將回傳到簡單的單一存盤庫案例。當然,您不會從他們的存盤庫中獲取歷史記錄。
1這假設您發現 Git 很簡單。??
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/371730.html
