设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 创业者 数据 手机
当前位置: 首页 > 服务器 > 安全 > 正文

Git Submodule使用完整教程(小结)(3)

发布时间:2020-08-21 01:42 所属栏目:53 来源:网络整理
导读:henryyan@hy-hp ~/submd/ws/lib1 git:(master) cd .. henryyan@hy-hp ~/submd/ws git clone ../repos/lib2.git Cloning into lib2...done.warning: You appear to have cloned an empty repository. henryyan@hy-hp

➜ henryyan@hy-hp ~/submd/ws/lib1 git:(master) cd .. ➜ henryyan@hy-hp ~/submd/ws git clone ../repos/lib2.git Cloning into lib2... done. warning: You appear to have cloned an empty repository. ➜ henryyan@hy-hp ~/submd/ws cd lib2 ➜ henryyan@hy-hp ~/submd/ws/lib2 git:(master) echo "I'm lib2." > lib2-features ➜ henryyan@hy-hp ~/submd/ws/lib2 git:(master) ✗ git add lib2-features ➜ henryyan@hy-hp ~/submd/ws/lib2 git:(master) ✗ git commit -m "init lib2" [master (root-commit) c22aff8] init lib2 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 lib2-features ➜ henryyan@hy-hp ~/submd/ws/lib2 git:(master) git push origin master Counting objects: 3, done. Writing objects: 100% (3/3), 227 bytes, done. Total 3 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (3/3), done. To /home/henryyan/submd/ws/../repos/lib2.git * [new branch] master -> master

2.2 为主项目添加Submodules

2.2.1 为project1添加lib1和lib2

➜ henryyan@hy-hp ~/submd/ws/lib2 git:(master) cd ../project1 ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) ls project-infos.txt ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) git submodule add ~/submd/repos/lib1.git libs/lib1 Cloning into libs/lib1... done. ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) ✗ git submodule add ~/submd/repos/lib2.git libs/lib2 Cloning into libs/lib2... done. ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) ✗ ls libs project-infos.txt ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) ✗ ls libs lib1 lib2 ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) ✗ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # new file: .gitmodules # new file: libs/lib1 # new file: libs/lib2 # # 查看一下公共类库的内容 ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) cat libs/lib1/lib1-features I'm lib1. ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) cat libs/lib2/lib2-features I'm lib2. </file>

好了,到目前为止我们已经使用git submodule add命令为project1成功添加了两个公共类库(lib1、lib2),查看了当前的状态发现添加了一个新文件(.gitmodules)和两个文件夹(libs/lib1、libs/lib2);那么新增的.gitmodules文件是做什么用的呢?我们查看一下文件内容便知晓了:

n@hy-hp ~/submd/ws/project1 git:(master) ✗ cat .gitmodules [submodule "libs/lib1"] path = libs/lib1 url = /home/henryyan/submd/repos/lib1.git [submodule "libs/lib2"] path = libs/lib2 url = /home/henryyan/submd/repos/lib2.git

原来如此,.gitmodules记录了每个submodule的引用信息,知道在当前项目的位置以及仓库的所在。

好的,我们现在把更改提交到仓库。

➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) ✗ git commit -a -m "add submodules[lib1,lib2] to project1" [master 7157977] add submodules[lib1,lib2] to project1 3 files changed, 8 insertions(+), 0 deletions(-) create mode 100644 .gitmodules create mode 160000 libs/lib1 create mode 160000 libs/lib2 ➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) git push Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 491 bytes, done. Total 4 (delta 0), reused 0 (delta 0) Unpacking objects: 100% (4/4), done. To /home/henryyan/submd/ws/../repos/project1.git 45cbbcb..7157977 master -> master

假如你是第一次引入公共类库的开发人员,那么项目组的其他成员怎么Clone带有Submodule的项目呢,下面我们再clone一个项目讲解如何操作。

2.3 Clone带有Submodule的仓库

模拟开发人员B……

➜ henryyan@hy-hp ~/submd/ws/project1 git:(master) cd ~/submd/ws ➜ henryyan@hy-hp ~/submd/ws git clone ../repos/project1.git project1-b Cloning into project1-b... done. ➜ henryyan@hy-hp ~/submd/ws cd project1-b ➜ henryyan@hy-hp ~/submd/ws/project1-b git:(master) git submodule -c22aff85be91eca442734dcb07115ffe526b13a1 libs/lib1 -7290dce0062bd77df1d83b27dd3fa3f25a836b54 libs/lib2

看到submodules的状态是hash码和文件目录,但是注意前面有一个减号:-,含义是该子模块还没有检出。

OK,检出project1-b的submodules……

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读