2011-03-28 63 views
3

我爲我的點文件使用git倉庫,除了部分文件(其中有一些標識符)之外,我想分享它。 有沒有辦法做到這一點,而無需創建另一個只有共享文件的git倉庫?只分享git倉庫的一個子集

非常感謝您的回答。

回答

2

否。庫的每個提交包含提交的所有文件,因此過濾的視圖將具有不同的提交標識符。

你可以使用類似git filter-branch的東西,但是這實際上會創建一個分支的副本,爲每個原始提交(如果沒有被過濾掉)創建一個新的提交。

可能有一種方法可以自動執行此操作,因此您的分支總是看起來與原始分支完全相同,但沒有關鍵文件。然後,您只會將過濾的分支推送到某個公共存儲庫。

但是請注意,將基於此存儲庫的更改合併到原始存儲庫中並不容易,並且可能意味着將每個補丁應用於各個補丁。

+0

謝謝你的確切答案。我不認爲我會這樣做,我正在尋找一些簡單且易於維護的東西。 – koral 2011-03-29 11:32:22

0

假設您不需要回購其他點文件,只需將不想共享的文件添加到.gitignore文件即可。在第一次提交之前這樣做,這些文件不應該成爲回購的一部分。

如果您已經重新生成了點文件,那麼只需將不想共享的文件複製到其他目錄。對不想共享的每個文件運行git rm .some_file以將其從回購庫中刪除。將它們添加到gitignore中,提交併從其他目錄中將它們複製回來。

+0

好吧,除非我錯了,否則這隻會從存儲庫中刪除所有重要文件,而我希望它們仍然是版本化的。 – koral 2011-03-29 11:34:12

1

您需要創建子模塊並共享該子模塊。

+0

這看起來更像我期待的,謝謝。我正在閱讀有關git子模塊的內容,如果有的話,我會回來提問。 – koral 2011-03-29 11:40:12

+0

如果你要用子模塊做很多工作,可以考慮git slave。另外,如果您感覺符合要求,請查看子樹合併。它可能比你需要的更復雜。 – 2011-05-01 18:24:17