本文以 skywalking-rocketbot-ui子模块合并到 skywalking 为例,手把手教你如何把 Git 子模块更新到主项目中去。
首先,把fork的skywalking项目克隆到本地:
OneMore MINGW64 /d/code $ git clone https://github.com/heihaozi/skywalking.git skywalking Cloning into 'skywalking'... remote: Enumerating objects: 241687, done. remote: Counting objects: 100% (373/373), done. remote: Compressing objects: 100% (201/201), done. remote: Total 241687 (delta 64), reused 240 (delta 21), pack-reused 241314 Receiving objects: 100% (241687/241687), 156.98 MiB | 3.83 MiB/s, done. Resolving deltas: 100% (93272/93272), done. Updating files: 100% (5928/5928), done.
进入skywalking目录,设置用户名和邮箱:
OneMore MINGW64 /d/code $ cd skywalking/ OneMore MINGW64 /d/code/skywalking (master) $ git config user.name CharliePu OneMore MINGW64 /d/code/skywalking (master) $ git config user.email heihaozi2006@163.com
指定将与复刻同步的远程上游仓库:
OneMore MINGW64 /d/code/skywalking (master) $ git remote add upstream https://github.com/apache/skywalking.git
查看一下远程上游仓库是否生效:
OneMore MINGW64 /d/code/skywalking (master) $ git remote -v origin https://github.com/heihaozi/skywalking.git (fetch) origin https://github.com/heihaozi/skywalking.git (push) upstream https://github.com/apache/skywalking.git (fetch) upstream https://github.com/apache/skywalking.git (push)
没有问题,初始化本地子模块:
OneMore MINGW64 /d/code/skywalking (master) $ git submodule init 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' 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' Submodule 'skywalking-ui' (https://github.com/apache/skywalking-rocketbot-ui.git) registered for path 'skywalking-ui' 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'
从子模块的远端更新修改:
OneMore MINGW64 /d/code/skywalking (master) $ git submodule update Cloning into 'D:/code/skywalking/apm-protocol/apm-network/src/main/proto'... Cloning into 'D:/code/skywalking/oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol'... Cloning into 'D:/code/skywalking/skywalking-ui'... Cloning into 'D:/code/skywalking/test/e2e/e2e-protocol/src/main/proto'... Submodule path 'apm-protocol/apm-network/src/main/proto': checked out 'e626ee04850703c220f64b642d2893fa65572943' Submodule path 'oap-server/server-query-plugin/query-graphql-plugin/src/main/resources/query-protocol': checked out '47202fc1eaa1864c587a78f423a0685ffbe294ad' Submodule path 'skywalking-ui': checked out '9e56d6cbbaff4678751f5355b953db3bbfd99c9b' Submodule path 'test/e2e/e2e-protocol/src/main/proto': checked out 'e626ee04850703c220f64b642d2893fa65572943'
从子模块的远端拉取上游的修改:
OneMore MINGW64 /d/code/skywalking (master) $ git submodule update --remote Submodule path 'skywalking-ui': checked out '774b69dd84e305be975e4c5ffc0d433aa8cbda32'
检查当前文件状态:
OneMore MINGW64 /d/code/skywalking (master) $ git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: skywalking-ui (new commits) no changes added to commit (use "git add" and/or "git commit -a")
发现skywalking-ui已经有更新了,可以直接将其提交到远端,也可以修改其他文件一起提交。
这里先修改一下CHANGES.md
文件,然后一起提交:
OneMore MINGW64 /d/code/skywalking (master) $ git add skywalking-ui OneMore MINGW64 /d/code/skywalking (master) $ git add CHANGES.md OneMore MINGW64 /d/code/skywalking (master) $ git status On branch master Your branch is up to date with 'origin/master'. Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: CHANGES.md modified: skywalking-ui OneMore MINGW64 /d/code/skywalking (master) $ git push origin master Enumerating objects: 5, done. Counting objects: 100% (5/5), done. Delta compression using up to 8 threads Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 409 bytes | 409.00 KiB/s, done. Total 3 (delta 2), reused 0 (delta 0), pack-reused 0 remote: Resolving deltas: 100% (2/2), completed with 2 local objects. To https://github.com/heihaozi/skywalking.git 50688c187..e4a61f183 master -> master
至此,大功告成,可以向社区提交PR了。
最后,感谢你的点赞、推荐和关注,帅气又美丽。