2013-12-17 29 views
0

我知道GIT中有子樹和子模塊,但我仍然不確定哪一個是我的最佳選擇。將子樹發佈到不同的GIT存儲庫

所以情況是這樣的:

  • 我有「LIB1」和「LIB2」,項目和回購項目已經在那裏,我不是從頭開始
  • 我希望將所有該項目在同一個GIT回購更容易簽入/結帳,因爲我主要在該回購工作
  • 項目不是開源的,但我想開源「lib2」
  • 我永遠不會在「lib2」工作,只在主項目內
  • 我不期待對lib2的貢獻,所以從它的回購合併它的一個小問題
  • 理想情況下,我希望這是對其他開發人員在這個項目上工作透明(所以當他們提交/推動他們不需要知道有一個子樹下面)

所以,這個想法將是能夠推動「lib2」自己的歷史,保持項目的其餘所有私人。我知道這個話題有很多問題,但我無法找到明確的答案。

回答

1

您可以用離開倉庫,因爲它是和導出此lib目錄下:

git filter-branch --subdirectory-filer lib2 

git help filer-branch說:

--subdirectory-filter <directory> 
     Only look at the history which touches the given subdirectory. 
     The result will contain that directory (and only that) as its project root. 

開發項目的不會注意到任何變化,因爲沒有變化。 - 但是更新導出的庫需要運行另一個過濾器分支。

+0

這將適應歷史,但我怎麼才能推「lib2」到自己的回購?我應該使用子樹嗎? – JohnUopini

+1

它將創建一個僅包含此目錄的新分支。您可以簡單地將該分支推送到另一個存儲庫:'git push otherrep branch' – michas

+0

這更好,謝謝! – JohnUopini

相關問題