簡體   English   中英

是否可以指定要使用 git 子模塊克隆哪些提交?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM