2013-01-21 101 views
0

我正在開發一個客戶端 - 服務器應用程序,我想在github上存儲兩個項目(客戶端和服務器)相同的github回購。 我在macosx上。 我使用Eclipse git插件爲客戶端項目創建了本地存儲庫,然後將其提交給github。它運行良好。添加新的項目到現有的github回購

現在我想添加到此服務器端項目可能在一個新的子文件夾中。這部分是在與客戶端部分不同的工作空間上開發的。我試圖使用Eclipse共享項目,但它告訴我沒有現有的回購。我認爲這是因爲系統的兩個部分是用不同的Eclipse IDE開發的。

我試圖在第一個下創建一個新的回購,但它變得很糟糕,因爲github無法理解哪個是主人。 我正在使用GitHub客戶端應用程序來管理對遠程倉庫的提交。

有人可以幫助我嗎?

謝謝

+0

是否有任何特殊原因不使用兩個獨立的存儲庫? – samuil

回答

0

我想,這不是這樣,git的作品。 Git需要一個存儲庫的一個根目錄,所有提交的文件夾和文件都必須位於這個目錄中。

2

它可能不直接回答你的答案,但我認爲這種特殊情況可以用Git的這種特性來規定,如submodules

在這種情況下,無論如何,您需要在任何地方託管兩個不同的存儲庫。但在子模塊的幫助下,您可以告訴Git一個回購的文件應位於另一個目錄樹內的。不會造成你描述的混亂!

例如,假設您的項目託管爲github.com/user/Clientgithub.com/user/Server回購。轉到Client庫的文件夾,並執行以下操作:

git submodule add [email protected]:user/Server.git src/server 

這將克隆與給定的地址回購到您指定的文件夾(src/server在這個例子中)。

之後,您必須提交更改。儘管添加了很多文件,但會有而不是在提交差異方面做了很多更改:在特殊文件中只有一個簡短記錄,表示此類存儲庫現在是子模塊。也就是說,Server的文件實際上並不存儲在Client回購中,只有對它們的引用被存儲。這是git子模塊的強大功能。

請注意,在此之後,當您在其他地方克隆您的Client回購時,默認情況下,其子模塊不會被取回。您必須使用git submodule update --init來初始化子模塊。

另請注意,對Server子模塊的引用指向它的特定修訂版本。在您對Server回購進行了一些更改後,您可能想要回到Client回購,導航到子模塊目錄(本例中爲src/server),並執行一個簡單的git pull並提交更改Client回購。再次,將不會有巨大的差異,只有新的參考子模塊將被提交。

作爲帶子模塊的回購示例,您可以查看我的回購Vim設置目錄:它的bundle文件夾中有許多插件,它們都是git子模塊。 GitHub很好地展示了它們,並且如果它是GitHub託管的,則允許輕鬆一鍵式導航來子模塊回購。

P.S.如果這與你想要的沒什麼共同之處,並且你只是想要將一個文件夾Server添加到回購Client中,則可以將Server複製到客戶端Server目錄中刪除所有Git跟蹤(如果有的話)刪除裏面的.git。現在你只需要一個回購,承諾所有這些變化並繼續。這樣做的缺點是完全喪失了Server回購的歷史 - 這在項目的初始階段並不是很大的痛苦。

相關問題