用发布标记 git 个子模块
Tagging git submodules with release
我们有一个项目,我们使用了很多子模块。在对我们的版本进行分支和标记时,我想确保子模块状态与分支和标记一起保留。因此,如果我们需要再次构建版本,我们可以确保子模块与我们最初使用的版本相同。执行此操作的最佳方法是什么?
谢谢
不需要您查找的内容,因为您的子模块的特定版本已链接到您的提交。
因为更新子模块是您在主存储库中提交的内容。
不确定是否很清楚:-(但它已经通过子模块的工作方式完成了...
子模块在父仓库中记录为 gitlink (a special entry in the index).
这意味着子模块状态在标记或分支时不会改变: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
要回到大师级使用:
cd C:\SuperProject
git checkout master
git submodule foreach --recursive git checkout master
或者,如果您有描述的链接分支 here,则有一个快捷方式:
git checkout master --recurse-submodules
我们有一个项目,我们使用了很多子模块。在对我们的版本进行分支和标记时,我想确保子模块状态与分支和标记一起保留。因此,如果我们需要再次构建版本,我们可以确保子模块与我们最初使用的版本相同。执行此操作的最佳方法是什么?
谢谢
不需要您查找的内容,因为您的子模块的特定版本已链接到您的提交。 因为更新子模块是您在主存储库中提交的内容。
不确定是否很清楚:-(但它已经通过子模块的工作方式完成了...
子模块在父仓库中记录为 gitlink (a special entry in the index).
这意味着子模块状态在标记或分支时不会改变: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
要回到大师级使用:
cd C:\SuperProject
git checkout master
git submodule foreach --recursive git checkout master
或者,如果您有描述的链接分支 here,则有一个快捷方式:
git checkout master --recurse-submodules