为什么管理git仓库
git 就是管理代码的工具。为什么还要对git进行管理?
因为有时候一个工程需要多个模块配合完成。且每个模块相互独立。这时候以一个工程为git仓库好还是以一个模块为仓库好?
显然是每个模块都是一个git更加合理一些。那么对于工程而言。他用到了多个git就需要对多个git进行管理
管理git的工具 repo & git子模块
repo的依赖
repo依赖python环境。目前我这里的环境是python3。不清楚python2是否可以
repo 仓库manifest的建立
- 创建manifest初始模型
mkdir manifest
cd manifest
git init --bare
git init
git push
- 添加 default.xml
<?xml version="1.0" encoding="UTF-8" ?>
<manifest>
<remote name="root" fetch="." />
<default remote="root" revision="master" />
<project path="raspberrypi" name="raspberrypi" revision="master"/>
</manifest>
git 三连
add commit push
如果需要再repo仓库添加新的git 参考 default.xml中的raspberry行
- 下载代码
- 先clone repo工具
git clone https://gitee.com/ChenBlue/git-repo.git
- 将工具放到~/bin 目录下
cp git-repo/repo ~/bin
- 下载代码
repo init -u git@gitee.com:ChenBlue/manifest.git -m default.xml --repo-url=git@gitee.com:ChenBlue/git-repo.git
或
repo init -u https://gitee.com/ChenBlue/manifest.git -m default.xml --repo-url=https://gitee.com/ChenBlue/git-repo.git
repo 也可以带上绝对路径 git-repo/repo 后面就不需要加 --repo-url 他会从本地复制一份repo到目录中而不是从网上再次下载
git 子模块
git子模块是git官方的一种管理git的方式在我看来和repo有一些异曲同工。目的是一样的不同点还是有一些的。最大的不同点就是repo是谷歌开发的一般的电脑不支持这个。这也是为什么repo工具要从下载而不能直接使用的原因,还有repo需要Python环境的支持。而git子模块只要安装了git就肯定支持。
添加一个子模块
git submodule add URL
git clone
git clone --recurse-submodules URL
忘记拉取子模块可以再补一句
git submodule update --init --recursive
拉取某个特定的子模块
git submodule update --init <path>