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 [--all | ...]
这条指令与git checkout -b 还是有很大区别的。
参数应简要说明您尝试对项目进行的更改。
指定了将参与此主题分支的项目。
注意:.是一个非常实用的简写形式,用来代表当前工作目录中的项目。

git checkout -b 是在当前所在的分支的基础上创建特性分支。
repo start 是在清单文件设定的分支的基础上创建特性分支。
posted @   南渡北归  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示