git - 如何在保持深度为 1 的同时在标签中初始化子模块

标签 git git-submodules

对于普通的 git 仓库,你可以这样做:

git clone --branch 4.1.1 https://github.com/WordPress/WordPress.git . --depth 1

这将在标记 4.1.1 处提供 WP 存储库

对于一个子模块,我确实得到了下面的信息,但我不知道如何只为一个标签做这件事。

git submodule add --depth 1  https://github.com/WordPress/WordPress.git wp

如何在1 层 将子模块 check out 到1 个标签

我不介意之后再执行几个命令,但如果可能的话,一个命令就更好了。

TLDR: 我想要一个标签处的子模块。 .git(/module) 文件夹越小越好。

最佳答案

考虑到一个子模块可能不带有它的标签,您可能会想先做(如“Can git submodule update be made to fetch tags in submodules?”中所建议的):

git submodule foreach --recursive 'git fetch --tags'

但正如我在“Does “git fetch --tags” include “git fetch”?”中所解释的,那将获取标签,但所有相关的提交(自 git 1.9.0,2014 年 2 月起)

相反,您可以进入子模块,并获取深度为 1 的标签内容:

git fetch --depth=1 origin refs/tags/<tag>:refs/tags/<tag>
git checkout <tag>

关于git - 如何在保持深度为 1 的同时在标签中初始化子模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29211711/

相关文章:

git - 在 Git 中转储二进制文件并恢复?

git - git submodule 相对于符号链接(symbolic link)的优势是什么?

git - 如何将 Git 子模块添加到子目录?

git - Git 子模块是否是一个不强制库用户下载其测试的好主意?

Git错误: "is in submodule"

git-p4: fatal: git 是在不支持 git-p4 的情况下构建的 (NO_PYTHON=1)

git - Jenkins with Git - 在构建之前将另一个分支* merge 到*当前分支

git - git add -n --ignore-missing 实际上做了什么?

git - "unable to append to .git/logs/refs/heads/master"提交时