美文网首页android团战兵器Android开发经验谈Android开发
git对submodule多模块的tag操作(并同步到远程分支)

git对submodule多模块的tag操作(并同步到远程分支)

作者: 三也视界 | 来源:发表于2017-08-14 13:45 被阅读152次

前言

git对多模块的操作需要使用下面的命令

git submodule foreach 

只需要在后面加上需要进行的操作,就会逐模块执行。比如:

git submodule foreach git stash

就会遍历所有子模块并把子模块储存起来。

打tag

因为 git submodule foreach只会对子模块而不会对主仓库操作,所以如果向对所有仓库都打上相同的tag就需要单独对主仓库打tag。

git tag tag_test

然后对子模块打tag,输入命令
git submodule foreach git tag tag_test
就会逐模块的打上tag_test,输入以下命令查看:
git submodule foreach git tag
结果:

Entering 'XXXXXXXXModule'
tag_test
Entering 'XXXXXXXXModule'
tag_test
Entering 'XXXXXXXXUtilsLibrary'
tag_test
Entering 'XXXXXXXX_Master'
tag_test
Entering 'XXXXXXXXModule'
tag_test
Entering 'XXXXXXXXModule'
tag_test
Entering 'XXXXXXXXLibrary'
tag_test
Entering 'XXXXXXXXApiModule'
tag_test
Entering 'XXXXXXXXModule'
tag_test

都已经成功打上了tag。

推送到gitlab

主仓库和模块的仓库依然需要分别推送
把子模块刚刚打的tag推送上去:
git submodule foreach git push origin tag_test
结果

Entering 'XXXXXXXXModule'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXModule.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXXModule'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXModule.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXXUtilsLibrary'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXUtilsLibrary.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXX_Master'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXX_Master.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXXModule'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXModule.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXXModule'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXModule.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXXLibrary'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXLibrary.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXXApiModule'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXApiModule.git
 * [new tag]         tag_test -> tag_test
Entering 'XXXXXXXXModule'
Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXXModule.git
 * [new tag]         tag_test -> tag_test

然后推送主仓库:
git push origin tag_test
推送成功

Total 0 (delta 0), reused 0 (delta 0)
To http://gitlab.XXXXXXXX_Master.git
 * [new tag]         tag_test -> tag_test

删除tag

因为标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除:
git tag -d tag_test
然后,从远程删除。删除命令也是push,但是格式如下:
git push origin :refs/tags/tag_test

删除成功:

To http://gitlab.XXXXXXXX_Master.git
 - [deleted]         tag_test

然后本地逐模块删除tag:
git submodule foreach git tag -d tag_test
然后远程删除:
git submodule foreach git push origin :refs/tags/tag_test
删除成功:

Entering 'XXXXXXXXModule'
To http://gitlab.XXXXXXXXModule.git
 - [deleted]         tag_test
Entering 'XXXXXXXXModule'
To http://gitlab.XXXXXXXXModule.git
 - [deleted]         tag_test
Entering 'XXXXXXXXUtilsLibrary'
To http://gitlab.XXXXXXXXUtilsLibrary.git
 - [deleted]         tag_test
Entering 'XXXXXXXX_Master'
To http://gitlab.XXXXXXXX_Master.git
 - [deleted]         tag_test
Entering 'XXXXXXXXModule'
To http://gitlab.XXXXXXXXModule.git
 - [deleted]         tag_test
Entering 'XXXXXXXXModule'
To http://gitlab.XXXXXXXXModule.git
 - [deleted]         tag_test
Entering 'DiscoveryLibrary'
To http://gitlab.intsig.net/CCAndr/DiscoveryLibrary.git
 - [deleted]         tag_test
Entering 'XXXXXXXXApiModule'
To http://gitlab.XXXXXXXXApiModule.git
 - [deleted]         tag_test
Entering 'XXXXXXXXModule'
To http://gitlab.XXXXXXXXModule.git
 - [deleted]         tag_test

重命名tag

git并没有直接重命名tag的命令,所以需要其他的方法。
参考这个网站

#创建一个旧的tag
git tag old
#创建一个依赖old的新标签
git tag new
#删除旧的标签
git tag -d old
git push origin :refs/tags/old
#上传新的标签
git push origin --tags

对模块的操作类似,不过是需要在每个命令前加一句
git submodule foreach

相关文章

  • git对submodule多模块的tag操作(并同步到远程分支)

    前言 git对多模块的操作需要使用下面的命令 只需要在后面加上需要进行的操作,就会逐模块执行。比如: 就会遍历所有...

  • Git常用操作命令收集

    远程仓库相关命令 分支(branch)操作相关命令 版本(tag)操作相关命令 子模块(submodule)相关操...

  • Git常用命令

    远程仓库相关命令 2)分支(branch)操作相关命令 3)版本(tag)操作相关命令 子模块(submodule...

  • git操作笔记

    git tag操作 git tag -l 查看本地tag git ls-remote --tag 查看当前分支远程...

  • Git常用命令

    相关资料:廖雪峰教程链接Git远程操作详解Git查看、删除、重命名远程分支和tag 操作流程 日常使用git更新提...

  • git操作

    更新代码 git pull 更新远程分支 git fetch origin --prune 切换tag 并更改 g...

  • 工作常用的git指令

    GIT常用命令 远程仓库 分支 tag 提交代码 子模块 导出 偷懒配置

  • git 创建分支 并 提交到远程分支

    1. git 创建分支 并 提交到远程分支2. Git远程操作详解(阮一峰)

  • 13 -- git <转>

    Git常用操作命令收集: 1) 远程仓库相关命令 2)分支(branch)操作相关命令 3)版本(tag)操作相关...

  • 常用Git操作

    1、删除远程分支及tag 删除远程分支: 删除tag: 2、重命名远程分支 如要重命名的分支为默认分支,会操作失败...

网友评论

本文标题:git对submodule多模块的tag操作(并同步到远程分支)

本文链接:https://www.haomeiwen.com/subject/uqllrxtx.html