第十四讲 Git 裸库与 Git submodule
Git 裸库与 Git submodule
Git 裸库
- 没有工作区的 Git 仓库(一般在服务器端)
- 创建裸库命令
1
git init --bare # 没有工作区
Git submodule
- 项目的相互协作(多模块开发-项目的依赖)
- 准备工作
- 在 GitHub 上创建仓库 git_parent 和 git_children
- 在本地创建仓库 git_parent 和 git_children
- 在本地创建的仓库 git_parent 新建文件 parent.txt ,将修改纳入暂存区,并进行提交
- 配置远程仓库 git_parent 信息
- 将本地的 git_parent 提交推送到远程 git_parent
- 在本地创建的仓库 git_children 新建 submodule.txt ,将修改纳入暂存区,并进行提交
- 配置远程仓库 git_children 信息
- 将本地的 git_children 提交推送到远程 git_children
- 在本地创建的仓库 git_children 新建 hello.txt ,将修改纳入暂存区,并进行提交
- 将本地的 git_children 提交推送到远程 git_children
- 执行 git submodule 命令,将子依赖拉到主项目
- 将文件修改纳入暂存区,接着进行提交
- 如果 git_children 发生变化,git_parent 也随之变化
- git submodule 命令
1
git submodule git@github.com:gitlecture/git_children.git my module
- 拉取
git_children
更新1
git pull # 在 git_parent/myModule 目录下
- 拉取所有依赖子模块的所有更新
1
git submodule foreach git pull
- 如果一个项目包含着 submodule ,进行 git clone 操作的时候,默认情况下是不会把 submodule 的代码克隆下来,需要手工的去执行一次
1
2
3git clone git@github.com:gitlecture/git_parent.git parent2 # 克隆
git submodule init # submodule 初始化
git submodule update --recursive # 进行子模块更新 - 进行 git clone 操作时候,使用后面加参数将所有子模块的更新全部克隆下来
1
git clone git@github.com:gitlecture/git_parent.git parent3 --recursive
- 删除 submodule (命令组合)
1
2
3
4
5
6
7
8
9
10
11
12# 1.将 submodule 从缓存区删除
git rm --cached mymodule
# 2.将 submodule 的实体文件从工作区删除
rm -rf mymodule
git add .
git commit -m 'remove submodule'
git push
# 3.将 .gitmodules 目录删除
rm .gitmodules
git add .
git commit -m 'remove submodules'
git push
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
TwikooGitalk