git - 如何添加 git 子模块并将其标记到版本中?

标签 git git-submodules

git clone my-new-repo-url
mkdir deps
cd deps
git submodule add -b 6.2.0 https://github.com/leethomason/tinyxml2.git

产量
fatal: 'origin/6.2.0' is not a commit and a branch '6.2.0' cannot be created from it
Unable to checkout submodule 'deps/tinyxml2'

不填充 .gitmodules,但创建一个文件夹 .git/modules/deps/tinyxml2并在 deps/tinyxml2 中添加一个 repo

我以为我以前这样做过,它会用 .gitmodules 填充
[submodule "deps/tinyxml2"]
    path = deps/tinyxml2
    url = https://github.com/leethomason/tinyxml2.git
    branch = 6.2.0

但它现在不起作用是怎么回事?

最佳答案

分支和发布标签不是一回事。一个分支可能会随着时间的推移继续发展和变化。在 .gitmodules branch = something 中有标志意味着子模块将在被要求更新时跟踪该分支。
git submodule add https://github.com/leethomason/tinyxml2.git用 .gitmodules 填充

[submodule "deps/tinyxml2"]
path = deps/tinyxml2
url = https://github.com/leethomason/tinyxml2.git

然后手动 checkout 子模块中的所需标签
cd deps/tinyxml2
git checkout 6.2.0

添加/提交/推送
git commit -am "adding and commiting all in one command"
git push

将子模块添加到repo中,在浏览器中我们可以看到

enter image description here

在哪里 c1424ee4是生成该 release-tag 的特定提交

现在做一个新的克隆到另一个文件夹
git clone my-new-repo-url
git submodule update --init --recursive

子模块是否在同一版本标签 6.2.0 处 checkout (提交 c1424ee4 )

关于git - 如何添加 git 子模块并将其标记到版本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53525204/

相关文章:

Git:如何只 merge 修改过的文件

git - 有没有办法在没有嵌套子模块的情况下添加 git 子模块?

git - 使用不同子模块设置的 checkout 提交无法正常工作

Git recovery : "object file is empty". 如何重建树?

git 子模块更新在一台机器上失败并出现错误但在另一台机器上工作

git - Git中如何忽略某个目录及其子目录中的某个文件类型?

php - Magento 将数据库从开发版更新为上线版

git - 如何使用 Homebrew 软件安装 imagemagick?

git - git repo 的奇怪问题?

git - Jenkins 和更新 git 子模块