Android中Repo 常用命令参考

译者:远方的自由 转载请注明出处: http://blog.csdn.net/z2066411585 Repo使用形式如下: repo

可选元素显示在[]中,例如,许多命令将项目列表作为参数,你可以指定项目列表作为项目的本地源目录的名称列表或路径列表

repo sync [<PROJECT0> <PROJECT1> ... <PROJECTN>]
repo sync [</PATH/TO/PROJECT0> ... </PATH/TO/PROJECTN>]

help


一旦安装了repo,你可以通过运行以下命令的摘要来查找最新的文档:

repo help

你可以通过repo tree 中运行下面命令来获取有关任何命令的信息:

repo help

例如,下面的命令产生一个描述和repo 的 init 参数选项列表,它初始化当前目录中的repo:

repo help init

init


repo init -u []

当前目录中安装Repo.将会创建一个.repo目录,其中主要包含用于repo源代码和标准android清单文件的git存储库. repo目录还包含manifest.xml, 它是./repo/maninfests/目录中所选清单的符号链接. 有关更新manifest的说明,请参阅manifest-format.txt.

选项:

  • -u: 指定从检索清单存储库的URL.常见的manifest可以在https://android.googlesource.com/platform/manifest找到
  • -m:选择存储库中的清单文件.如果没有选择清单名称,则默认为default.xml
  • -b: 指定一个修订,一个特定的manifest-branch.

注意:对于所有余下的Repo命令,当前工作目录必须是./repo的父目录或父目录的子目录.

sync


下载新的更改并更新本地环境中的工作文件.如果你运行repo sync没有任何参数,它将同步所有项目的文件. 当运行repo sync,这是发生了什么事:

  • 如果项目从未同步过,那么repo sync相当于git clone. 远程仓库中的所有分支复制到本地项目目录中.
  • 如果项目已经同步过一次,那么repo sync相当于:
git remote update
git rebase origin/<BRANCH>
  • 其中<BRANCH>是本地项目目录中当前检出的分支.如果本地分支没有跟踪远程仓库中的分支,那么项目不会发生同步.
  • 如果git rebase操作导致合并冲突,你将需要使用正常的git命令(例如git rebase --continue)来解决冲突.

执行repo sync成功后,指定项目中代码与远程仓库中代码保持同步. 选项:

  • -d: 将指定的项目切换到manifest修订版.如果项目当前位于主题分支上,但是暂时需要manifest修订,则会有帮助. --s: 同步到由当前清单中的manifest-server元素指定的已知好的构建. --f: 即使项目无法同步,也要继续同步其他项目.

upload


repo upload []

对于指定的项目,repo比较本地分支与上次repo sync期间更新的远程分支. Repo将提示你选择一个或多个尚未上传的分支进行审查.选择一个或多个分支后,所选分支上的所有提交将通过https连接传送个gerrit.你需要配置https密码才能启用上传授权.请访问Password Generator生成新的用户名/密码对,以便通过https使用.

当gerrit通过服务器接受到对象数据,它会将每个提交变成一个变化,以便审阅者可以单独评论每个提交.将几个checkpoint提交合并为一个提交,在运行repo上传之前使用git rebase -i.

如果你运行repo upload没有任何参数,它将搜索所有项目的更改上传. 在上传之后对其进行编辑修改,应该使用像git rebase -igit commit --amend来更新你的本地提交.编辑完成后: - 确保更新的分支是当前检出的分支 - 对于系列中每个提交,在括号内输入gerrit改变id:

# Replacing from branch foo
[ 3021 ] 35f2596c Refactor part of GetUploadableBranches to lookup one specific...
[ 2829 ] ec18b4ba Update proto client to support patch set replacments
# Insert change numbers in the brackets to add a new patch set.
# To create a new change record, leave the brackets empty.

上传完成后,更改将会有一个额外的补丁集. 如果只想上传当前检出的git分支,可以使用标志--current-branch (or –cbr 简写).

diff


repo diff []

在使用git diff的提交和工作树之间显示了突出的变化.

download


repo download 从审查系统中下载指定的更改,并使其在项目的本地工作目录中可用. 例如,将 change 23823 下载到platform/build目录中 repo download platform/build 23823

repo sync应该有效删除通过repo download检索任何提交.或者,你可以检出远程分支,例如:git checkout m/master.

注意:在Gerrit的网页上发生变化时,以及由于全球所有服务器的复制延迟而导致所有用户的repo download都能够找到它时,会有轻微的镜像延迟.

forall


repo forall [] -c

在每个项目中执行给定的shell命令,以下附加环境变量可通过repo forall

  • REPO_PROJECT 被设置为项目的唯一名称
  • REPO_PATH 是相对于客户端根目录的路径
  • REPO_REMOTE 是manifest中远程系统的名称
  • REPO_LREV 是manifest中的修订名称,翻译为本地跟踪分支.如果你需要将manifest修订传递给本地执行的git命令,则使用此方法.
  • REPO_RREV 是manifest中修订的名称,完全如manifest中所写.

选项:

  • -c: 命令和参数来执行,该命令通过/bin/sh和任何参数在作为shell位置参数传递之后进行评估.
  • -p: 在输出指定的命令之前显示项目标题,这是通过管道绑定到命令stdin,stdout和sterr流实现的,并将所有输出管道连接到一个连续的流中,该流将显示在单个会话中.
  • -v:显示命令写入stderr的消息

prune


repo prune []

修改(删除) 已经合并的主分支

start


repo start []

从manifest中指定的修订开始,开始一个新的开发分支. 参数应该提供你正试图对项目进行更改的简短说明. 如果你不知道,请考虑使用默认名称. 指定哪些项目将参与这个主题分支

注意: 是当前工作目录中项目的有用缩写

status


repo status []

将工作树与临时区域(索引)进行比较,并在指定的每个项目中对该分支(HEAD)上的最近提交进行比较,显示这三个状态之间存在差异的每个文件的摘要. 运行run status 只查看当前分支的状态,状态信息按项目列出.对于项目中的每个文件,使用两个字母代码; 在第一列中,大写字母表示暂存区域与上次提交状态的区别.

字母

含义

描述

-

no changer

same in HEAD and index

A

added

not in HEAD, in index

M

modified

in HEAD, modified in index

D

deleted

in HEAD, not in index

R

renamed

not in HEAD, path changed in index

C

copied

not in HEAD, copied from another in index

T

mode changed

same content in HEAD and index, mode changed

U

unmerged

conflict between HEAD and index; resolution required

在第二列中,小写字母表示工作目录与索引的不同之处.

字母

含义

描述

-

new/unknown

not in index, in work tree

m

modified

in index, in work tree, modified

d

deleted

in index, not in work tree

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏HTML5学堂

Git版本回退、跳转与数据恢复

HTML5学堂-利利:上周,为大家介绍一款“分布式版本控制系统”——Git。除了介绍“分布式”的概念、对比SVN与Git之外,我们讲解了基本的Git初始化与提交...

47070
来自专栏Android群英传

一篇文章,教你学会Git

8210
来自专栏轻扬小栈

svn如此好的软件,竟现在才发现

24130
来自专栏Android开发经验

mac下SourceTree出现错误:fatal: could not read Username for 'xxx': Device not configured

之前一直都是好的,但是用Android Studio提交代码是可以的。回想了一下,可能是因为捣鼓mac自带的钥匙串,导致SourceTree使用其中存储的密码的...

24820
来自专栏IT综合技术分享

在IntelliJ IDEA上面进行使用svn进行版本管理

2.1K40
来自专栏noteless

eclipse svn插件卸载 重新安装 Subclipse卸载安装 The project was not built since its build path is incomplete T

使用的是eclipse kepler版本,崩溃了,想要重新安装,主要遇到了下面这几种问题

21330
来自专栏康怀帅的专栏

PhpStorm 配置 Laravel 智能提示

本文介绍了 PhpStorm 下的 Laravel 智能提示。 配置 composer 设置中搜索 composer 进行设置 安装 laravel-ide-h...

35540
来自专栏青玉伏案

Git知识总览(一) 从 git clone 和 git status 谈起

本篇博客是整理git相关知识的第一篇,因为之前一直是用SourceTree对Git的命令行操作用的不是特别熟,于是乎过了一遍ProGit(链接:https://...

242100
来自专栏c#开发者

BizTalk开发小工具-批量更新发送端口订阅配置参数

最近公司的主要的数据交换都基于BizTalk完成,现在BizTalk已经成为不可缺少的数据交换核心。利用的就是BizTalk的发布/订阅模式。 因此在每个发送端...

35850
来自专栏Petrichor的专栏

安装teamviewer 远程桌面

版权声明:转载请注明出处 https://blog.csdn.net/JNingWei/article/details/73436761 ...

49040

扫码关注云+社区

领取腾讯云代金券