git-repo 是 Google 开发的 Git 多仓库管理工具,用于管理多个 Git 仓库的协同工作。下面是主要用法:
安装与配置
安装
1 2 3 4 5 6 7 8 9
| pip install git-repo
brew install repo
sudo apt-get install repo
|
检查是否安装成功:
初始化配置
1 2 3
| git config --global user.name "Your Name" git config --global user.email "your.email@example.com"
|
基本工作流程
1. 初始化仓库
1 2 3 4
| 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 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
| repo manifest -o manifest.xml
repo init -b another-branch
repo manifest
|
实际应用示例
场景1:多仓库协作开发
1 2 3 4 5 6 7 8 9
| 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
| repo init -m local_manifest.xml
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" /> <include name="another.xml" /> </manifest>
|
忽略特定项目
1 2
| repo sync --groups=default,-notdefault
|
小贴士
性能优化:
1 2 3 4 5
| repo sync -j8
repo sync -c --no-tags
|
问题排查:
1 2 3 4 5
| repo sync --verbose
repo --trace upload
|
常用别名:
1 2 3 4 5 6
| alias r='repo' alias rs='repo sync' alias ru='repo upload' alias rst='repo status' alias rl='repo list'
|
git-repo 特别适合管理 Android 源码、嵌入式系统、微服务架构等多仓库项目,能显著提高协作效率。