如何找黑客办事?如何找到真正的黑客帮忙

使用场景当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能。常用命令12345git clone --recursive 递归的方式克隆整个项目git submodule

使用场景

当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能。

常用命令

1
2
3
4
5
git clone --recursive 递归的方式克隆整个项目
git submodule add 添加子模块
git submodule init 初始化子模块
git submodule update 更新子模块
git submodule foreach git pull 拉取所有子模块

如何使用

1. 创建带子模块的版本库

例如我们要创建如下结构的项目

1
2
3
project
|--moduleA
|--readme.txt

创建project版本库,并提交readme.txt文件

1
2
3
4
5
6
7
8
git init --bare project.git
git clone project.git project1
cd project1
echo This is a project. > readme.txt
git add .
git commit -m add readme.txt
git push origin master
cd ..

创建moduleA版本库,并提交a.txt文件

1
2
3
4
5
6
7
8
git init --bare moduleA.git
git clone moduleA.git moduleA1
cd moduleA1
echo This is a submodule. > a.txt
git add .
git commit -m add a.txt
git push origin master
cd ..

在project项目中引入子模块moduleA,并提交子模块信息

1
2
3
4
5
6
7
8
cd project1
git submodule add ../moduleA.git moduleA
git status
git diff
git add .
git commit -m add submodule
git push origin master
cd ..

使用git status可以看到多了两个需要提交的文件,其中.gitmodules指定submodule的主要信息,包括子模块的路径和地址信息,moduleA指定了子模块的commit id,使用git diff可以看到这两项的内容。这里需要指出父项目的git并不会记录submodule的文件变动,它是按照commit id指定submodule的git header,所以.gitmodules和moduleA这两项是需要提交到父项目的远程仓库的。

1
2
3
4
5
6
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use git reset HEAD ... to unstage)
new file: .gitmodules
new file: moduleA


  • 发表于 2020-11-28 22:24
  • 阅读 ( 325 )
  • 分类:互联网

0 条评论

请先 登录 后评论
tljie哥
tljie哥

683 篇文章

你可能感兴趣的文章

相关问题