使用release标记git子模块

使用release标记git子模块,git,git-submodules,Git,Git Submodules,我们有一个项目,其中我们使用了很多子模块。当分支和标记我们的发行版时,我想确保分支和标记保留子模块状态。因此,如果我们需要再次构建发行版,我们可以确保子模块与我们最初使用的版本相同。最好的方法是什么 谢谢由于子模块的特定版本已链接到提交,因此不需要您正在查找的内容。 因为更新子模块是您在主存储库中提交的事情 不太清楚:-(但已经通过子模块的工作方式完成了…子模块在父回购协议中记录为() 这意味着在标记或分支时子模块的状态不会改变:gitlink仍然是相同的,子模块将签出相同的SHA1 在父回购中

我们有一个项目,其中我们使用了很多子模块。当分支和标记我们的发行版时,我想确保分支和标记保留子模块状态。因此,如果我们需要再次构建发行版,我们可以确保子模块与我们最初使用的版本相同。最好的方法是什么


谢谢

由于子模块的特定版本已链接到提交,因此不需要您正在查找的内容。 因为更新子模块是您在主存储库中提交的事情


不太清楚:-(但已经通过子模块的工作方式完成了…

子模块在父回购协议中记录为()

这意味着在标记或分支时子模块的状态不会改变:gitlink仍然是相同的,子模块将签出相同的SHA1


在父回购中进行分支与在子模块中进行分支没有任何影响或关系。标签也是如此。

我知道这是一个老问题,但这里没有直接的答案

我只标记超级项目存储库。假设您的工作分支是超级项目和所有子模块的
master

C:\SuperProject>git --version
git version 2.23.0.windows.1

C:\SuperProject>git status
On branch master
Your branch is up to date with 'origin/master'.

C:\SuperProject>git tag v7.3
在进行了一些更改并希望返回到
v7.3
标记后:

C:\SuperProject>git checkout v7.3
Note: switching to 'v7.3'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -

Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 3965477 =
M       submodule

C:\SuperProject>git submodule update --init --recursive
Submodule path 'submodule': checked out 'd9aedca7de2b9fcd873a7823c492ae32bd4b28b7'

C:\SuperProject>cd submodule

C:\SuperProject\submodule>git status
HEAD detached at d9aedca
nothing to commit, working tree clean
或者,如果您有如上所述的链接分支,则有一个快捷方式:

git checkout master --recurse-submodules

我看不出有什么问题。在您的发布分支中,Git本质上将子模块视为提交。因此,只要分支仍然指向相同的子模块,提交就应该是稳定的。我是否遗漏了什么?
git checkout master --recurse-submodules