[英]Is it possible to specify which commits to clone with git submodules?
我正在使用.gitmodules
文件為我的主倉庫指定一個 git 子模塊:
[submodule "SUBMODULE"]
path = ...
url = ...
然后在命令行中: git clone MAINREPO --recursive
。
是否可以在克隆命令中指定要檢出的子模塊的提交?
對你的問題的簡短回答是:沒辦法。 信息寫在提交的超級項目中,存儲有關子模塊更改的信息。 每次跑
git clone --recursive superproject-url
或者
git checkout --recursive some-old-commit
Git 在 HEAD 中查找子模塊的提交或正在檢出的舊提交並檢出存儲的子模塊提交。
如果你想更改存儲在 HEAD: go 中的提交到本地克隆的子模塊,檢查提交,返回到超級項目,添加並提交子模塊中的更改,推送:
cd subdir
git checkout branch-tag-or-ID
cd .. # back to the superproject
git add subdir
git commit -m "Change in subdir" subdir
如果要更改為的子模塊中的提交是 HEAD,則可以在超級項目中執行
git submodule update --remote subdir
git commit -m "Change in subdir" subdir
您可以使用 shell 腳本或 git 別名來代替命令行選項git clone --recursive && cd subdir && git checkout commit-ID
。 這是唯一的方法。 就像是
# .gitconfig
[alias]
clone-sub = "!f() { git clone --recursive \"$1\" && cd \"$2\" && git checkout \"$3\"; }; f"
用法: git clone-sub superproject-url submodule-path commit-ID
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.