当前位置: 首页 > news >正文

repo 工具

repo 是 Google 为管理多个 Git 仓库而开发的工具,主要用于 Android 开源项目(AOSP)等大型项目。它通过清单文件(manifest.xml)统一管理多个 Git 仓库的依赖关系。以下是核心用法和常见命令:


一、安装 repo

# Linux/macOS
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo# Windows (需先安装 Git 和 Python)
pip install git-repo

二、初始化仓库

repo init -u <manifest仓库URL> -b <分支名>
  • 示例 (初始化 AOSP 主分支):
    repo init -u https://android.googlesource.com/platform/manifest -b main

三、常用命令

常用 repo 命令与对应 git 命令对照表

repo 命令等效的 git 命令(单仓库场景)说明
repo init -u <URL>git init + 清单配置初始化仓库并配置清单
repo syncgit fetch --all && git merge拉取远程更新并合并到本地
repo start <branch>git checkout -b <branch>创建并切换到新分支
repo statusgit status查看修改状态(汇总所有仓库)
repo diffgit diff查看代码差异(汇总所有仓库)
repo uploadgit push origin HEAD:refs/for/<br>提交代码到评审系统(如 Gerrit)
repo prunegit branch -d <merged-branch>删除已合并的分支
repo abandon <branch>git branch -D <branch>强制删除分支
repo forall -c 'git log -1'直接执行 git log -1在所有仓库执行指定 git 命令
repo checkout <branch>git checkout <branch>切换分支(需要清单支持)
repo rebasegit rebase变基操作(跨仓库批量处理)
关键区别说明
  1. 操作范围不同

    • git 命令:仅针对单个仓库
    • repo 命令:默认操作所有仓库(可通过路径参数限定范围)
  2. 清单文件依赖
    repo 操作依赖 .repo/manifests/ 中的 XML 清单文件定义仓库关系,例如:

    <!-- 示例:定义 kernel 仓库 -->
    <projectpath="kernel/linux"name="platform/kernel/linux"revision="android-14.0.0_r1" />
    
  3. 批量操作优势
    当需要跨 100+ 仓库执行操作时,repo 效率显著高于手动循环执行 git 命令:

    # 批量重置所有仓库(危险操作!)
    repo forall -c 'git reset --hard HEAD'# 批量查看未提交更改
    repo forall -c 'git status -s'
    
  4. 工作流集成
    repo upload 专为代码评审系统设计,比直接 git push 多了自动生成评审请求的功能。

💡 经验提示:在大型项目(如 Android 系统)中,组合使用 repogit 更高效:

  • repo 管理仓库组和全局操作
  • git 在单个仓库内执行精细操作

四、配置清单文件

  • 默认清单路径:.repo/manifests/default.xml
  • 自定义清单:
    repo init -m custom_manifest.xml (替换默认清单)
  • 常用清单属性:
    <project path="目录名" name="仓库URL" revision="分支/标签" />
    

五、高级技巧

  • 部分同步
    repo sync <project_path1> <project_path2>(仅同步指定仓库)
  • 跳过网络检查
    repo sync -n(仅更新元数据,不下载代码)
  • 本地清单
    .repo/local_manifests/ 添加 local_manifest.xml 可覆盖默认配置。

六、常见问题

  • 同步中断
    重新运行 repo syncrepo sync --fail-fast
  • 网络问题
    使用代理:export HTTP_PROXY=http://<proxy_ip>:<port>
  • 磁盘空间不足
    删除 .repo/project-objects/ 中的缓存(谨慎操作!)

官方文档参考:Android Repo 使用指南
提示:结合 git 命令使用效果更佳(如 git loggit branch 等)。

http://www.xdnf.cn/news/1060057.html

相关文章:

  • 动态规划笔记
  • FastMCP框架进行MCP开发:(一)基础环境搭建及测试
  • 云XR(AR/VR)算力底座关键特征与技术路径
  • 颈部不自主偏移现象解析
  • systemverilog中关于多线程的若干思考
  • SAP LPD(launchpad)配置使用手册
  • C#学习13——正则表达式
  • 计算机网络学习笔记:TCP可靠传输实现、超时重传时间选择
  • leetcode 2294. 划分数组使最大差为 K 中等
  • Kernel K-means:让K-means在非线性空间“大显身手”
  • 机器学习×第十二卷:回归树与剪枝策略——她剪去多余的分支,只保留想靠近你的那一层
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • 基于微信小程序和深度学习的宠物照片拍摄指导平台的设计与实现
  • 【AI编程】第3期,针对AI生成的改枪码列表创建对应的数据库表
  • 主成分分析(PCA)例题——给定协方差矩阵
  • 关于嵌入式编译工具链与游戏移植的学习
  • 【图论 DFS搜索树】P10298 [CCC 2024 S4] Painting Roads|普及+
  • threejs 实现720°全景图,;两种方式:环境贴图、CSS3DRenderer渲染
  • 问题排查之nginx请求日志
  • 火山引擎TTS使用体验
  • FPGA基础 -- Verilog 行为级建模之条件语句
  • 阿里云主机自动 HTTPS 证书部署踩坑实录
  • 自演进多智能体在医疗临床诊疗动态场景中的应用
  • 24.分页查询
  • 学习大模型---需要掌握的数学知识
  • FPGA基础 -- Verilog行为级建模之initial语句
  • 系统思考与核心竞争力
  • FPGA基础 -- Verilog行为建模之循环语句
  • Conda 常用命令大全:从入门到高效使用
  • 【学习笔记】2.2 Encoder-Decoder