[英]git sparse-checkout of a submodule from a root repo
我有一個包含 4 個子模塊的主倉庫:
我想sparse-checkout
kvm
,過濾掉一些與 Windows 上的文件系統限制不兼容的煩人文件( AUX
是保留文件名,kvm 樹包含aux.{h|c}
)
我了解如何在普通存儲庫上進行sparse-checkout
,但是當我對子模塊執行相同操作時,它不起作用,缺少.git/modules
目錄:
git clone https://github.com/KVM-VMI/kvm-vmi/
git -C kvm config core.sparseCheckout true
echo "!drivers/gpu/drm/nouveau/nvkm/subdev/i2c/aux.*" >> .git/modules/kvm/info/sparse-checkout # ignore aux.*
echo "/*" >> .git/modules/kvm/info/sparse-checkout # checkout everything else
git submodule update --init
第一個echo
命令將失敗,因為.git/modules
尚未創建。
我不知道誰負責創建這個目錄。
我是否在某處遺漏了“ init
”命令?
筆記:
我一直在 Stackoverflow 上或從博客文章中尋找解決方案:
但它們對我不起作用,因為我不想克隆一個單獨的kvm
庫,然后kvm
其添加到我的主存儲庫中。
謝謝。
使用--no-checkout
aka -n
自己克隆 kvm 存儲庫到kvm
目錄。 git submodule absorbgitdirs kvm
設置它,從超級項目git submodule absorbgitdirs kvm
移動 repo 並設置其core.worktree
並將.git
面包屑文件留在該kvm
工作樹中,然后git -C kvm reset --hard
完成結帳.
git clone https://github.com/KVM-VMI/kvm-vmi
cd kvm-vmi
git submodule init
git clone -n `git config submodule.kvm.url` kvm
mkdir kvm/.git/info
你准備好了
mkdir kvm/.git/info
git -C kvm config core.sparsecheckout true
printf %s\\n '/*' '!aux.*' >kvm/.git/info/sparse-checkout
git submodule absorbgitdirs kvm
git -C kvm reset --hard
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.