2015-06-26 119 views
0

我想將項目中的一個文件夾更改爲子模塊。 這是我(sumplified)目錄結構:如何將跟蹤的文件夾更改爲git子模塊

|-app <- the root of git project 
|--themes 
|--plugins 
|--lib 

現在,我希望把應用程序/插件成子模塊,這樣我承諾在這個目錄下變成單獨reposiotry。

設置插件的一個新的回購協議後,我已經累了git submodule add <submodule-repository> plugins,但後來我收到一條消息,讀取

應用程序/插件已經存在於索引當然

它存在於索引中,因爲它作爲主項目存儲庫的一部分被跟蹤。

我該如何解決?我是否應該刪除主文件夾.git,將app/plugins添加到.gitignore,再次提交,然後運行git submodule add

如果作爲項目子模塊的文件夾被添加到包含子模塊的項目的.gitignore中,這實際上會引發另一個問題?

+0

Git子模塊在紙上聽起來很不錯,但是使用起來很痛苦。改用git子樹。 – spuder

回答

0

我設法回答我自己的問題。也許我發佈得太快了。不過也許這將幫助一些人在未來:

爲了將跟蹤當前項目到這個項目中的子模塊的文件夾,我採取了以下措施:

  1. 初始化文件夾中的一個新的存儲庫那將會是一個子模塊;
  2. 將內容提交給遠程;
  3. 使用git rm -rf <folder_that_will_be_a_submodule>從主項目中刪除此文件夾;
  4. 現在做同樣的事情,但rm -rf;
  5. 轉到您的項目根目錄(其中主要爲.git);
  6. 執行git submodule add <repository>;
  7. 刪除對現在是主.gitignore子模塊的文件夾的引用(如果它已在那裏引用)。

希望它能幫助別人。