2015-11-04 45 views
8

我寫更新承諾,在一個子項目會穴各子模塊的服務。我這樣做的幼稚的方法是在一個子模塊,git reset --hard <hash>運行git fetch,然後添加子模塊和提交。如何設置子模塊以指向特定的提交而不提取?

我想跳過git fetch步驟,並簡單地強制子模塊指向給定的哈希以獲得更好的性能(跳過獲取對象並佔用磁盤空間)並處理可能不再存在於上游的提交,無論如何都不會被抓到(如果他們被推力擊倒)。

回答

7

的解決方案是要寫入到GIT中索引直接,這實際上是簡單的爲子模塊。使用Git 2:

git update-index --cacheinfo 160000,<Git hash of the submodule's tree>,<path to the submodule>


因此,舉例來說,如果你的項目目錄結構是這樣的:

. 
├── .git 
└── submodule 

然後更新子模塊指向提交2764a900748fbed7453f5839cb983503cee346d2你可以運行:

git update-index --cacheinfo 160000,2764a900748fbed7453f5839cb983503cee346d1,submodule

最後像往常一樣跟進git commit

相關問題