Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

git-repo 是 Google 开发的 Git 多仓库管理工具,用于管理多个 Git 仓库的协同工作。下面是主要用法:

安装与配置

安装

1
2
3
4
5
6
7
8
9
# 通过 pip 安装
pip install git-repo

# 或使用系统包管理器
# macOS
brew install repo

# Ubuntu/Debian
sudo apt-get install repo

检查是否安装成功:

1
2
repo --version
# 如果能正常打印相应的版本号则说明安装成功,否则安装失败

初始化配置

1
2
3
# 配置身份信息
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

基本工作流程

1. 初始化仓库

1
2
3
4
# 创建并初始化 manifest 仓库
mkdir my-project
cd my-project
git init

2. 创建 manifest 文件

在仓库中创建 .repo/manifests/default.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin"
fetch="https://github.com" />

<default remote="origin"
revision="main"
sync-j="4" />

<project name="user/project1" path="project1" />
<project name="user/project2" path="project2" />
<project name="user/project3" path="subdir/project3" />
</manifest>

3. 同步所有仓库

1
2
3
4
5
6
7
8
9
10
11
# 初始化 repo 客户端
repo init -u https://github.com/user/manifest-repo.git

# 同步所有项目
repo sync

# 同步特定项目
repo sync project1 project2

# 强制同步(丢弃本地修改)
repo sync -d

常用命令

分支管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看当前分支状态
repo status

# 在所有仓库中创建分支
repo start feature-branch --all

# 在特定仓库创建分支
repo start feature-branch project1 project2

# 切换分支
repo checkout branch-name

# 列出所有分支
repo branches

代码提交

1
2
3
4
5
6
7
8
9
10
11
# 查看所有仓库的修改
repo diff

# 提交到所有仓库
repo upload

# 提交特定仓库
repo upload project1

# 查看提交历史
repo forall -c 'git log --oneline -5'

信息查询

1
2
3
4
5
6
7
8
# 列出所有管理的仓库
repo list

# 显示仓库状态
repo status

# 检查未提交的修改
repo forall -c 'git status -s'

高级用法

并行操作

1
2
3
4
5
# 并行执行命令(在所有仓库中)
repo forall -j 4 -c 'git fetch origin'

# 执行特定命令
repo forall -c 'git clean -fd'

Manifest 操作

1
2
3
4
5
6
7
8
# 查看 manifest 信息
repo manifest -o manifest.xml

# 切换到不同 manifest 分支
repo init -b another-branch

# 查看当前 manifest
repo manifest

实际应用示例

场景1:多仓库协作开发

1
2
3
4
5
6
7
8
9
# 克隆 Android 源码(经典示例)
repo init -u https://android.googlesource.com/platform/manifest
repo sync -j8

# 创建功能分支
repo start my-feature --all

# 开发完成后提交
repo upload

场景2:批量操作

1
2
3
4
5
6
7
8
# 批量拉取更新
repo forall -c 'git pull origin main'

# 批量清理
repo forall -c 'git clean -df && git checkout -- .'

# 批量查看日志
repo forall -c 'echo "=== $REPO_PROJECT ===" && git log --oneline -3'

场景3:定制 manifest

1
2
3
4
5
# 使用本地 manifest
repo init -m local_manifest.xml

# 包含多个 manifest 文件
repo init -m default.xml -m local.xml

配置选项

.repo/manifest.xml 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<manifest>
<!-- 远程仓库配置 -->
<remote name="github"
fetch="https://github.com"
review="review.example.com" />

<!-- 默认配置 -->
<default remote="github"
revision="main"
sync-c="true"
sync-j="4" />

<!-- 项目定义 -->
<project name="owner/repo"
path="path/to/repo"
groups="group1,group2"
revision="develop" />

<!-- 包含其他 manifest -->
<include name="another.xml" />
</manifest>

忽略特定项目

1
2
# 同步时排除某些项目
repo sync --groups=default,-notdefault

小贴士

  1. 性能优化

    1
    2
    3
    4
    5
    # 使用并行同步加速
    repo sync -j8

    # 使用本地缓存
    repo sync -c --no-tags
  2. 问题排查

    1
    2
    3
    4
    5
    # 查看详细日志
    repo sync --verbose

    # 显示命令执行过程
    repo --trace upload
  3. 常用别名

    1
    2
    3
    4
    5
    6
    # 添加到 ~/.bashrc
    alias r='repo'
    alias rs='repo sync'
    alias ru='repo upload'
    alias rst='repo status'
    alias rl='repo list'

git-repo 特别适合管理 Android 源码、嵌入式系统、微服务架构等多仓库项目,能显著提高协作效率。

评论