我寫更新承諾,在一個子項目會穴各子模塊的服務。我這樣做的幼稚的方法是在一個子模塊,git reset --hard <hash>
運行git fetch
,然後添加子模塊和提交。如何設置子模塊以指向特定的提交而不提取?
我想跳過git fetch
步驟,並簡單地強制子模塊指向給定的哈希以獲得更好的性能(跳過獲取對象並佔用磁盤空間)並處理可能不再存在於上游的提交,無論如何都不會被抓到(如果他們被推力擊倒)。
我寫更新承諾,在一個子項目會穴各子模塊的服務。我這樣做的幼稚的方法是在一個子模塊,git reset --hard <hash>
運行git fetch
,然後添加子模塊和提交。如何設置子模塊以指向特定的提交而不提取?
我想跳過git fetch
步驟,並簡單地強制子模塊指向給定的哈希以獲得更好的性能(跳過獲取對象並佔用磁盤空間)並處理可能不再存在於上游的提交,無論如何都不會被抓到(如果他們被推力擊倒)。
的解決方案是要寫入到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
。