我過去曾經使用過濾分支,但現在我正在尋找一種解決方案,通過分解它來允許我和其他人創建請求,從而公開私有存儲庫的文件夾。什麼是「過濾叉」的最佳方法?
說我有一個項目和項目A具有folderA,我需要建立從A叉子B中只包含folderA在裏面。
這樣做的好方法是什麼?我找不到一個簡單的解決方案,不分叉整個存儲庫,然後應用過濾器分支。
編輯:叉將公共
謝謝:)
我過去曾經使用過濾分支,但現在我正在尋找一種解決方案,通過分解它來允許我和其他人創建請求,從而公開私有存儲庫的文件夾。什麼是「過濾叉」的最佳方法?
說我有一個項目和項目A具有folderA,我需要建立從A叉子B中只包含folderA在裏面。
這樣做的好方法是什麼?我找不到一個簡單的解決方案,不分叉整個存儲庫,然後應用過濾器分支。
編輯:叉將公共
謝謝:)
你有幾種可能性。
folderA
即你當前狀態遞歸地將其複製到外部的子目錄。然後在該子目錄中運行git init
,像往常一樣發佈github上新創建的存儲庫。然後,你需要從你的項目(git rm -rf folderA
)除去folderA
的內容,然後重新連接它作爲一個git子模塊(見this tutorial例如),然後提交更改的主要項目。在這種情況下,外部用戶將不知道folderA有一些以前的歷史可言,但可以肯定,從這個「0天的」 folderA
開始將有自己的歷史,你可以在你的shell項目跟蹤它。
folderA
一個新的歷史替換folderA
目錄條目一個名爲gitlink特殊類型的條目(實際上gitlink
只是一個任意的SHA-1,git submodule
用它來指代版本的「檔案庫」。我不能調用此方法容易的,但它是可行的確實,如果你真的需要公開folderA
以前的歷史,這是一段路要走。
folderA
中使用這種類型的合併進行了更改。可能你不會覺得這種方式很方便,但它可能是有用的。子模塊在我的情況下工作得很好。謝謝! –
我不認爲有一個「簡單的解決方案」這個問題這是任何比你提出一個更好的(叉器/過濾器分支)。 Git不像SVN,它不支持「稀疏克隆」(一個存儲庫的部分克隆)。
嗯,我會用'混帳submodule'的問題。關於'folderA'的_previous_歷史,您應該決定是否需要將'folderA'中的更改歷史記錄顯示給其他人。如果你這樣做,那麼你應該「過濾分支」它們,但最有可能的是,你可能會考慮將'folderA'移動到一個單獨的git倉庫,並將它作爲子模塊附加到項目A上,作爲外部世界的第0天 – user3159253
如果你需要進一步的解釋,我可以創建一個更詳細的答案,但基本上這個想法已經在桌面上了。你也可以嘗試一種叫做子樹合併的野獸,但實際上它更麻煩。 – user3159253
如果我爲過濾器分支主人分配其他項目,人們是否仍然能夠在存儲庫中的任何位置看到某種歷史記錄? –