repo 的使用
参考:https://blog.csdn.net/wjjontheway/article/details/124128462
repo是为了管理多个git仓库而用的。
repo自己也建立了一个git仓库:manifest。用于管理各个子仓分别处于哪个分支。
repo只是一个脚本,要执行repo init后才下载了完整的工具链。
在没repo init前,repo help也只有init和help的帮助选项。repo init后,help也显示更多子命令。
repo version
repo selfupdate
repo自己的版本号和自身更新。
repo init [option] [manifest url]
-u 指定git的访问路径,该选项不可少
-b 指定manifest仓库的特定分支
--repo-url 当repo init时会下载repo工具,默认从谷歌下,可以通过它来指定。
更建议的是设置环境变量来指定:
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
manifest文件
.repo/manifests/default.xml
指定了远程git的rul和仓库。以风火轮为例:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="https://openharmony.gitee.com/openharmony" name="origin" review="https://openharmony.gitee.com/openharmony/"/>
<remote fetch="http://dd.youyeetoo.cn:8000/ohos_r1" name="ohos_r1" review="http://dd.youyeetoo.cn:8000/ohos_r1"/>
<project name="kernel_linux_5.10_R1" path="kernel/linux/linux-5.10-R1" revision="main" remote="ohos_r1"/>
<project name="soc_R1" path="device/soc/youyeetoo/rk3588" revision="main" remote="ohos_r1"/>
<project name="vendor_R1" path="vendor/youyeetoo/R1" revision="main" remote="ohos_r1"/>
<project name="vendor_common_R1" path="vendor/youyeetoo/common" revision="main" remote="ohos_r1"/>
<project name="board_R1" path="device/board/youyeetoo/R1" revision="main" remote="ohos_r1"/>
<project name="drivers_peripheral_R1" path="drivers/peripheral" revision="main" remote="ohos_r1"/>
<project name="build_R1" path="build" revision="main" remote="ohos_r1">
<linkfile dest="build.sh" src="build_scripts/build.sh"/>
<linkfile dest=".gn" src="core/gn/dotfile.gn"/>
<linkfile dest="build.py" src="build_scripts/build.py"/>
</project>
<include name="ohos/ohos.xml" />
</manifest>
remote元素指定仓库的url前缀,可以有多个,标记name方便project元素区分(project元素用remote来指定取哪个name),做为项目url的前缀;
default元素,上例中没有,如果后续项目元素中没有指定remote,默认的仓库前缀。
project元素,包含name(仓库名,url前缀后面的仓库),path(本地路径),reversion(checkout到哪个branch)
还可以包含其他manifest文件:
repo sync命令
如果项目从未同步过,相当于执行git clone
如果项目已经同步过,相当于执行:
git remote update
git rebase origin/<BRANCH>
如果 git rebase 操作导致合并冲突,那么您需要使用普通 Git 命令(例如 git rebase --continue)来解决冲突
repo start 创建分支
当repo sync后,所有项目都在no branch上。不允许立刻修改,而是要repo start创建分支后修改。
repo start
这条指令与git checkout -b 还是有很大区别的。
注意:.是一个非常实用的简写形式,用来代表当前工作目录中的项目。
git checkout -b 是在当前所在的分支的基础上创建特性分支。
repo start 是在清单文件设定的分支的基础上创建特性分支。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理