假設我有一個超級項目包含N個子模塊。我在本指南中創建了以下內容:Git Submodule TutorialGit分佈式工作流程子模塊
因此,我爲所有子模塊公共存儲庫加上超級項目的公共存儲庫,所有這些都在遠程主機上:machine1/path/to/public/repos.git
。這些我會打電話給我的公共回購。
現在,用戶X克隆了我公開回購的超級項目,並將所有內容都提交給了他的私人回購。他當地的.git/config
和.gitmodules
中的所有參考文獻指向了我的公開回購。
我想用戶X擁有自己的公共倉庫,所以我們可以使用下面介紹的分佈式工作流:Git Distributed Workflows
這樣用戶X,我可以把我們的地方改變我們自己的公共回購和再拉從變化彼此的公共回購。我想避免我們兩個必須推到相同的公共回購。
由於X的當地回購中的.gitmodules
指向我公開回購,因此X需要更改ulr,以便他們指向其公共回購。請記住,.gitmodules已提交,所以如果X提交&在修改它以引用其公共回購後發佈.gitmodules
,則會遇到衝突,然後從他的公共回購中提取更改(我的本地.gitmodules
將引用他的公共回購,而不是我的這是不是所需的結果)。
那你覺得這是最好的選擇:
- 從資源庫中的樹刪除
.gitmodules
並將其添加到.gitignore
所以它不再跟蹤。 - 保持
.gitmodules
不分配。我不知道爲什麼,但這在我看來是一個壞主意。 - 使用
git --update-index assume-unchanged .gitmodules
所有這些選項都具有以下缺點:.gitmodules
將被消滅,如果一個運行git clean
或丟棄所有未跟蹤文件。
我該如何保留X的.gitmodules
中的更改以永久引用他自己的公共回購協議,而不必擔心會意外擦除配置或引起不必要的更改?
對不起,我花了這麼長時間才接受這個答案,現在我第一次看到它,我不明白,現在看起來很明顯。 – 2014-02-04 05:29:53