2012-03-12 61 views
0

在某個目錄下創建一個git倉庫。添加該目錄中的所有文件並提交它們。然後在父目錄中創建另一個git存儲庫並添加所有文件。在其他地方克隆該存儲庫。請注意,克隆存儲庫中缺少子存儲庫中的文件。我如何讓Git添加嵌套存儲庫中的所有文件?請注意,我不需要子模塊 - 我希望也可以添加嵌套存儲庫中的文件。如何讓git添加已經在另一個git存儲庫下進行跟蹤的文件?

+2

你究竟想要做什麼?跟蹤另一個回購是一個非常糟糕的主意。這是子模塊的用途。 – 2012-03-12 20:49:40

+0

我正在試圖完成我所說的我試圖做的事 - 我試圖從目錄中遞歸添加所有文件,並且不想在嵌套存儲庫上跳過。 – dromodel 2012-03-12 20:57:17

+0

您是否試圖一次跟蹤兩個單獨的git倉庫中的子目錄中的文件?這是一個壞主意。你是否試圖追蹤父回購中的實際嵌套git回購?這是一個更糟糕的主意。爲什麼不描述你想要完成的目標?而不是描述你想要採取的行動? – 2012-03-12 21:14:14

回答

1

很可能您確實需要類似子模塊的東西(但可能不是文字子模塊)。例如,擁有一個由N個子項目(N> 1)組成的大型項目似乎相當普遍,其中,對於良好的源和/或組織原因,每個子項目都應該有自己的git回購。

子模塊讓你有一個大的「超容器」,簡單地召喚出所有的子模塊:

super 
    sub1 
    sub2 
    sub3 

這裏每個子模塊是獨立的(只要它知道/關心,反正)和「超級「只收集三個。

問題在於,在開發過程中,您經常(但並非總是)要從每個子項目中獲取「分支devel上的最新內容」。然而,子模塊追蹤子1的具體提交 - 提交e01ab7c,子2的58125f7等,其可能不是「最新的」。你當然可以進入每個子項目和「git co devel」來移動分支,然後進入超級項目並修復每個子模塊指向該子項目,但如果你能夠告訴git 「讓我知道每個子模塊的分支devel的小費」。

但git不會這樣做。我們使用一個巨大的(有點片狀的)腳本來實現沿着這些線條的東西。 (它還收集跨越多個子模塊提交,因爲有時一個變化影響,例如,在上面的類的實例都sub1sub3。)

1

你還沒有明確你的問題,所以我會給你一個很少有答案。

如果你不真正關心這個子目錄作爲一個獨立的存儲設備了,只想把它折成父庫,即你不想要一個嵌套的倉庫處的全部,剛纔複製的內容您可以簡單地從您已經克隆的內容中刪除.git目錄。

如果您確實想要一個嵌套的存儲庫,並且處理得當,那麼您需要一個子模塊 - 這是一個repo內的回購,其中包括命令git submodule。看看手冊頁或documentation online

如果你想擁有它,你可以使用git-subtree,它可以讓你將一個單獨的repo合併到一個子樹中,並將它拆分開來,將它合併回另一個repo。這不是沒有它的複雜性,所以在決定使用它之前一定要熟悉它的文檔。

+0

你是否想要鏈接到上面的https://github.com/apenwarr/git-subtree? – torek 2012-03-12 21:30:13

+0

@torek謝謝,一次做太多事情。 – Cascabel 2012-03-12 22:16:04

+0

我希望Git可以像嵌套的.git目錄中的數據一樣處理父存儲庫中的數據。暫時假裝我所擁有的是一個Git倉庫,它被一些看起來像Git的文件混淆了。 – dromodel 2012-03-12 23:33:16

相關問題