本文以 skywalking-rocketbot-ui子模块合并到 skywalking 为例,手把手教你如何把 Git 子模块更新到主项目中去。

首先,把fork的skywalking项目克隆到本地:

  1. OneMore MINGW64 /d/code
  2. $ git clone https://github.com/heihaozi/skywalking.git skywalking
  3. Cloning into 'skywalking'...
  4. remote: Enumerating objects: 241687, done.
  5. remote: Counting objects: 100% (373/373), done.
  6. remote: Compressing objects: 100% (201/201), done.
  7. remote: Total 241687 (delta 64), reused 240 (delta 21), pack-reused 241314
  8. Receiving objects: 100% (241687/241687), 156.98 MiB | 3.83 MiB/s, done.
  9. Resolving deltas: 100% (93272/93272), done.
  10. Updating files: 100% (5928/5928), done.

进入skywalking目录,设置用户名和邮箱:

  1. OneMore MINGW64 /d/code
  2. $ cd skywalking/
  3. OneMore MINGW64 /d/code/skywalking (master)
  4. $ git config user.name CharliePu
  5. OneMore MINGW64 /d/code/skywalking (master)
  6. $ git config user.email heihaozi2006@163.com

指定将与复刻同步的远程上游仓库:

  1. OneMore MINGW64 /d/code/skywalking (master)
  2. $ git remote add upstream https://github.com/apache/skywalking.git

查看一下远程上游仓库是否生效:

  1. OneMore MINGW64 /d/code/skywalking (master)
  2. $ git remote -v
  3. origin https://github.com/heihaozi/skywalking.git (fetch)
  4. origin https://github.com/heihaozi/skywalking.git (push)
  5. upstream https://github.com/apache/skywalking.git (fetch)
  6. upstream https://github.com/apache/skywalking.git (push)

没有问题,初始化本地子模块:

  1. OneMore MINGW64 /d/code/skywalking (master)
  2. $ git submodule init
  3. Submodule 'apm-protocol/apm-network/src/main/proto' (https://github.com/apache/skywalking-data-collect-protocol.git) registered for path 'apm-protocol/apm-network/src/main/proto'
  4. Submodule 'oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol' (https://github.com/apache/skywalking-query-protocol.git) registered for path 'oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol'
  5. Submodule 'skywalking-ui' (https://github.com/apache/skywalking-rocketbot-ui.git) registered for path 'skywalking-ui'
  6. Submodule 'test/e2e/e2e-protocol/src/main/proto' (https://github.com/apache/skywalking-data-collect-protocol.git) registered for path 'test/e2e/e2e-protocol/src/main/proto'

从子模块的远端更新修改:

  1. OneMore MINGW64 /d/code/skywalking (master)
  2. $ git submodule update
  3. Cloning into 'D:/code/skywalking/apm-protocol/apm-network/src/main/proto'...
  4. Cloning into 'D:/code/skywalking/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol'...
  5. Cloning into 'D:/code/skywalking/skywalking-ui'...
  6. Cloning into 'D:/code/skywalking/test/e2e/e2e-protocol/src/main/proto'...
  7. Submodule path 'apm-protocol/apm-network/src/main/proto': checked out 'e626ee04850703c220f64b642d2893fa65572943'
  8. Submodule path 'oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol': checked out '47202fc1eaa1864c587a78f423a0685ffbe294ad'
  9. Submodule path 'skywalking-ui': checked out '9e56d6cbbaff4678751f5355b953db3bbfd99c9b'
  10. Submodule path 'test/e2e/e2e-protocol/src/main/proto': checked out 'e626ee04850703c220f64b642d2893fa65572943'

从子模块的远端拉取上游的修改:

  1. OneMore MINGW64 /d/code/skywalking (master)
  2. $ git submodule update --remote
  3. Submodule path 'skywalking-ui': checked out '774b69dd84e305be975e4c5ffc0d433aa8cbda32'

检查当前文件状态:

  1. OneMore MINGW64 /d/code/skywalking (master)
  2. $ git status
  3. On branch master
  4. Your branch is up to date with 'origin/master'.
  5. Changes not staged for commit:
  6. (use "git add <file>..." to update what will be committed)
  7. (use "git restore <file>..." to discard changes in working directory)
  8. modified: skywalking-ui (new commits)
  9. no changes added to commit (use "git add" and/or "git commit -a")

发现skywalking-ui已经有更新了,可以直接将其提交到远端,也可以修改其他文件一起提交。

这里先修改一下CHANGES.md文件,然后一起提交:

  1. OneMore MINGW64 /d/code/skywalking (master)
  2. $ git add skywalking-ui
  3. OneMore MINGW64 /d/code/skywalking (master)
  4. $ git add CHANGES.md
  5. OneMore MINGW64 /d/code/skywalking (master)
  6. $ git status
  7. On branch master
  8. Your branch is up to date with 'origin/master'.
  9. Changes to be committed:
  10. (use "git restore --staged <file>..." to unstage)
  11. modified: CHANGES.md
  12. modified: skywalking-ui
  13. OneMore MINGW64 /d/code/skywalking (master)
  14. $ git push origin master
  15. Enumerating objects: 5, done.
  16. Counting objects: 100% (5/5), done.
  17. Delta compression using up to 8 threads
  18. Compressing objects: 100% (3/3), done.
  19. Writing objects: 100% (3/3), 409 bytes | 409.00 KiB/s, done.
  20. Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
  21. remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
  22. To https://github.com/heihaozi/skywalking.git
  23. 50688c187..e4a61f183 master -> master

至此,大功告成,可以向社区提交PR了。

微信公众号:万猫学社

微信扫描二维码

关注后回复「电子书」

获取12本Java必读技术书籍

最后,感谢你的点赞关注,帅气又美丽。

手把手教你把 Git 子模块更新到主项目的更多相关文章

  1. 手把手教你用git和SourceTree上传项目到github细解(转)

    尊重原创:https://blog.csdn.net/qq_32365567/article/details/52859166 一.引言 我想大家现在都很熟悉github了,也能运用github上开源 ...

  2. 手把手教你使用Git管理你的软件代码

    什么是分布式版本控制系统?Git有哪些常用命令?什么是仓库?Git的操作区域包括哪些?Git有哪些常用对象(object)?git rebase和git merge的区别是什么?git reset,g ...

  3. 推荐!手把手教你使用Git

    推荐!手把手教你使用Git 原文出处: 涂根华的博客   http://blog.jobbole.com/78960/ 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与 ...

  4. 【转载】手把手教你使用Git(简单,实用)

    手把手教你使用Git(简单,实用) 标签: git 2016年04月21日 20:51:45 1328人阅读 评论(0) 收藏 举报 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. ...

  5. 手把手教你如何使用Cocos2d Console 进行html5项目发布

    手把手教你如何使用Cocos2d Console 进行html5项目发布   1.首先需要先安装Cocos2d Console运行需要的工具. 详情参见 这篇文章 http://www.cocoach ...

  6. 转:手把手教你如何玩转Solr(包含项目实战)

    原文地址:手把手教你如何玩转Solr(包含项目实战) 参考原文

  7. 手把手教你使用Git

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  8. Git之 手把手教你使用Git

    一:Git是什么? Git是目前世界上最先进的分布式版本控制系统. 二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以 ...

  9. 《转》手把手教你使用Git

    Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不 需要联网了,因为版本都是在自己的电脑上.既然每个人的电脑都有一个完整的版本库,那多个人如何 ...

随机推荐

  1. css上下居中

    position: absolute; top: 20%; left: 50%; transform: translateX(-50%); -ms-transform: translateX(-50% ...

  2. Rust 实现一个简单的区块链

    一.背景 近期用 Rust 实现了 Jeiwan/blockchain_go,与原项目相比没有加入新的功能,只是换了一个编程语言实现了一遍,源码放在 Github 上. 开发这个项目,花费了好几个周末 ...

  3. 记一次简单的Oracle离线数据迁移至TiDB过程

    背景 最近在支持一个从Oracle转TiDB的项目,为方便应用端兼容性测试需要把Oracle测试环境的库表结构和数据同步到TiDB中,由于数据量并不大,所以怎么方便怎么来,这里使用CSV导出导入的方式 ...

  4. manjaro20初始配置

    输入法配置 安装完以后需要注销或重启,然后配置fctx 注意如果刚开始 export GTK_IM_MODULE=fcitx export QT_IM_MODULE=fcitx export XMOD ...

  5. IEEE754浮点数表示法

    IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)是一套规定如何用二进制表示浮点数的标准.就像"补码规则"建立了二进制位和正负数的一一对应关系一样,IEE ...

  6. Flutter Windows 桌面端支持进入稳定版

    Flutter 创建伊始,我们就致力于打造一个能够构建精美的.可高度定制的.并且可以编译为机器码的跨平台应用解决方案,以充分发挥设备底层硬件的全部图形渲染能力.今天,Flutter 对 Windows ...

  7. 2022.02.05 DAY2

    前言 今天陪老姐送对象去安庆了,上午还去了西风禅寺求了个签,第一次拿到中评签,看来今年还需要继续努力哈哈哈.一直到晚上才有时间去做点题目,今天依旧是leetcode. 题目 leetcode 1 两数 ...

  8. Component、PureComponent源码解析

    1.什么是Component,PureComponent? 都是class方式定义的基类,两者没有什么大的区别,只是PureComponent内部使用shouldComponentUpdate(nex ...

  9. Request与Response

    前言 request和response对象是由服务器创建的.我们来使用它们: request对象是来获取请求消息,response对象是来设置响应消息. Request 定义 服务器进行创建,通过该对 ...

  10. winSCP上传文件到服务器失败,提示permission denied,返回码3

    1.查看sftp服务在你服务器的路径 cat /etc/ssh/sshd_config | grep sftp 2.在winSCP进行连接设置 设置好你的主机名.端口.用户名和密码,然后点击高级,点击 ...