repo下载使用以及相关命令

本文全面解析了Repo命令在Android开发中的应用,包括下载、初始化、拉取代码、分支管理、代码提交等关键操作,以及如何利用Repo提升代码管理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天公司开始使用repo管理Android代码因此总结了一下repo相关的命令,在这里和大家分享一下。
repo下载与使用
1、repo介绍
Android 使用Git作为代码管理工具,开发在这里插入代码片了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,它是一个Python脚本,对Git部分命令进行封装,简化了对多个Git版本库的管理,将百多个Git库有效的进行组织。
简单点说:Repo是基于git的仓库管理工具,是一个python脚本 。

2、下载repo
可以用 wget http://android.git.kernel.org/repo 或者 curl http://android.git.kernel.org/repo >~/bin/repo 来下载 repo , 接下来给repo赋予权限chmod a+x ~/bin/repo。

3、repo 初始化命令。
repo init 进行初始化,执行之后会在该目录下生成一个.repo文件夹。

4、repo 拉代码。
1.repo init -u ssh://dangkaikai@172.16.132.2:6088/repo/manifests -b master -m SP7731EP_W19.09.05_W6003_release.xml --no-repo-verify
将ssh://dangkaikai@172.16.132.2:6088/repo/manifests和SP7731EP_W19.09.05_W6003_release.xml换成自己项目的。
2.repo sync 或者 repo sync -j16
说明:实现参照清单.repo/manifests.xml克隆并同步版本库,如果版本库不存在,则相当于执行git clone
如果版本库已经存在,则相当于执行
#对每个remote源进行fetch操作
git remote update
#针对当前分支的跟踪分支进行rebase操作
git rebase/origin/branch
选项:
-j: 多任务,一般8核心可以开到16任务,过多会起反作用
-c: 只下载当前分支代码
-d: 让工程回退到manifest指定的版本
-f: 如果某个工程同步失败,继续同步

5、repo branches 查看分支。
示例:repo branches

6、repo checkout 切换分支,实际上是对git checkout命令的封装。
示例:
#切换到liuq-dev分支
repo checkout liuq-dev

7、repo diff 查看工作区文件差异。实际是对git diff命令的封装,用于分别显示各个项目工作区下的文件差异。在 commit 和工作目录之间使用 git diff 显示明显差异的更改。
示例:
#查看所有项目 repo diff
#只查看其中的一个项目 repo diff skipper/build

8、repo status 查看文件修改状态
示例:
#输出skipper/build项目分支的修改状态
repo status skipper/build

9、repo push 向服务器提交代码。repo会自己查询需要向服务器提交的项目并提示用户。
repo push [–all|…]
示例:
#向服务器提交代码。repo会自己查询需要向服务器提交的项目并提示用户。
repo push org

10、repo forall -c ‘echo $REPO_PROJECT’
repo forall -c ‘echo $REPO_PATH’ 添加环境变量。

11、repo forall -p -c git merge topic 合并多个分支。把所有项目都切换到master分支,执行上述指令将topic分支合并到master分支。

12、repo forall -c git tag crane-stable-1.6 打标签。在所有项目下打标签。

13、repo forall -c ‘git remote add korg ssh://xiong@172.16.31/$REPO_PROJECT.git’ 设置远程仓库
引用环境变量REPO_PROJECT添加远程仓库。
#删除远程仓库。
repo forall -c git remote rm korg

14、repo forall -c git branch crane-dev
repo forall -c git checkout -b crane-dev 创建特性分支。

15、repo grep
repo grep {pattern | -e pattern} […] 打印出符合某个模式的行。相当于对 git grep 的封装,用于在项目文件中进行内容查找。
示例:
#要找一行, 里面有#define, 并且有’MAX_PATH’ 或者 ‘PATH_MAX’:
repo grep -e ‘#define’ --and -( -e MAX_PATH -e PATH_MAX )
#查找一行, 里面有 ‘NODE’或’Unexpected’, 并且在一个文件中这两个都有的。
repo grep --all-match -e NODE -e Unexpected

16、repo manifest manifest检验工具,用于显示manifest文件内容。
选项:
-h, –help 显示这个帮助信息后退出
-r, –revision-as-HEAD 把某版次存为当前的HEAD
-o -|NAME.xml, –output-file=-|NAME.xml 把manifest存为NAME.xml

17、repo version 显示repo的版本号。

18、repo upload
repo upload [–re --cc] {[]…|–replace }
repo upload 相当于git push,但是又有很大的不同。它不是将版本库改动推送到代码审核服务器(Gerrit软件架设)的特殊引用上,使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为一个待审核的修改集,并进入代码审核流程,只有当审核通过后,才会合并到官方正式的版本库中。
选项:
-h, –help 显示帮助信息
-t 发送本地分支名称到Gerrit代码审核服务器
–replace 发送此分支的更新补丁集
–re=REVIEWERS 要求指定的人员进行审核
–cc=CC 同时发送通知到如下邮件地址

19、repo download
repo download {project change[/patchset]}…
repo download命令主要用于代码审核者下载和评估贡献者提交的修订。贡献者的修订在Git版本库中refs/changes//引用方式命名(缺省的patchset为1),和其他Git引用一样,用git fetch获取,该引用所指向的最新的提交就是贡献者待审核的修订。使用repo download命令实际上就是用git fetch获取到对应项目的refs/changes//patchset>引用,并自动切换到对应的引用上。

20、repo selfupdate
用于 repo 自身的更新。如果有新版本的repo存在, 这个命令会升级repo到最新版本。通常这个动作在repo sync时会自动去做, 所以不需要最终用户手动去执行。
选项:
-h, –help 显示这个帮助信息后退出.
–no-repo-verify 不要验证repo源码.

21、repo forall 迭代器,可以在所有指定的项目中执行同一个shell指令。
22、repo forall […] -c
选项:
-c 后面所带的参数是shell指令,即执行命令和参数。命令是通过 /bin/sh 评估的并且后面的任何参数就如 shell 位置的参数通过。
-p 在shell指令输出之前列出项目名称,即在指定命令的输出前显示项目标题。这是通过绑定管道到命令的stdin,stdout,和 sterr 流,并且用管道输送所有输出量到一个连续的流,显示在一个单一的页面调度会话中。
-v 列出执行shell指令输出的错误信息,即显示命令写到 sterr 的信息。
附加环境变量:
REPO_PROJECT 指定项目的名称
REPO_PATH 指定项目在工作区的相对路径
REPO_REMOTE 指定项目远程仓库的名称
REPO_LREV 指定项目最后一次提交服务器仓库对应的哈希值
REPO_RREV 指定项目在克隆时的指定分支,manifest里的revision属性
  如果-c后面所带的shell指令中有上述环境变量,则需要用单引号把shell指令括起来。

23、repo remote 设置远程仓库。
repo remote add […]
#删除远程仓库
repo remote rm […]

24、repo abandon 删除指定分支。实际是对git brance -D命令的封装。

25、repo prune 删除已经合并分支。实际上是对git branch -d 命令的封装,该命令用于扫描项目的各个分支,并删除已经合并的分支。
26、repo start 创建并切换分支,repo start实际是对git checkout -b命令的封装。
这条指令与git checkout -b 还是有很大区别的。
  · git checkout -b 是在当前所在的分支的基础上创建特性分支。
  · 而repo start 是在清单文件设定的分支的基础上创建特性分支。

27、repo help 显示命令的详细帮助。
repo help -all 显示完整的命令列表。

28、repo 回退到具体某一天的提交。
repo forall -c ‘ID=git log --before="2016-06-28 23:00" --after="2010-01-01" -1 --pretty=format:"%H";git reset --hard $ID’

29、repo 回退当前所有的修改,和服务器上代码拉下来一样。
repo forall -c “git clean -df” && repo forall -c “git checkout .” && repo sync -j8

30、repo abandon <分支名> 删除代码文件夹下的所有git库的分支。

31、repo overview 查看project里面没有提交的记录。

32、repo prune [project list] 删除已经merge(合并)的project(工程) 。

33、repo rebase 主要用在从上游分支获取最新commit信息,并有机的将当前分支和上游分支进行合并。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值