当前位置: 首页 > 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.lqws.cn/news/446383.html

相关文章:

  • 行业热点丨手机中框设计如何体现增材思维?
  • 计算机导论期末快速复习指南
  • “本地化思维+模块化体验”:一款轻量数据中心监控系统的真实测评
  • 软件测试基础知识(一)
  • StableDiffusion实战-手机壁纸制作 第一篇:从零基础到生成艺术品的第一步!
  • API 接口:程序世界的通用语言与交互基因
  • 据字典是什么?和数据库、数据仓库有什么关系?
  • 《中国棒垒球》奥运会金牌排名·棒球1号位
  • 2025 渗透工具:【中国蚁剑】连接一句话MUA文件 远控虚拟机靶机
  • Web 应用防火墙(WAF)工作原理、防护策略与部署模式深度剖析
  • Spring-创建第一个SpringBoot项目
  • Flutter中FutureBuilder和StreamBuilder
  • 解决Vue再浏览器的控制台中更新属性不生效
  • C++实现手写strstr函数
  • 什么是池化
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【环境搭建 / 点灯】
  • 数据库连接池(Druid、HikariCP)详解
  • Java 正则表达式高级用法
  • Debian配置Redis主从、哨兵
  • 啊啊啊啊啊啊啊啊code
  • Arduino Nano 33 BLE Sense Rev 2开发板使用指南之【外设开发】
  • 目标:创建一个钱包,挖一些币,然后查看余额
  • 算法导论第十八章 计算几何:算法中的空间艺术
  • 使用 mysql2/promise 模块返回以后,使用 await 返回数据总结
  • 声网对话式 AI:开启我的编程进阶之旅
  • CDH部署HDFS详细指南
  • Arduino入门教程​​​​​​​:12、WS2812B
  • 不会PLC,怎么学上位机?
  • 在 Mac 上配置 Charles,抓取 iOS 手机端接口请求
  • 写实数字人:开启教学新纪元,重塑教育生态