文章目录
一、概述
repo是Android为了方便管理多个git库而开发的python脚本,是为了更有效的利用git,现在也用于Harmony OS开发
二、常用命令
下面从实践流程来讲一下常用的命令
1. repo init
repo init -u <URL> [<OPTIONS>]
运行命令后会在当前目录生成.repo隐藏子目录,类似于.git,.repo下文件目录如上图所示
- repo:一个git库,包含repo命令运行的所有脚本
- manifests:一个git库,包含default.xml文件,用于描述repo所管理的git库的信息
- manifests.git:manifests这个库的实体,manifests/.git目录下的所有文件都会链接到该目录
- default.xml:manifests/default.xml的一个软链接
常用参数:
-u:指定manifests这个远程git库的URL,默认情况,这个git库只包含了default.xml一个文件
-m,-manifest-name:指定所需要的manifests库中的清单文件。默认情况下,会使用maniftests/default.xml
-b,-manifest-branch:指定manifest.xml文件中的一个版本,也就是俗称的“分支”
2. repo sync
repo sync [PROJECT_LIST]
运行该命令,会将远程代码同步到本地
- 如果是第一次在本地git库使用此操作,则该命令相当于
git clone
- 如果不是第一次,则该命令等价于 -
git remote update
-git rebase origin/<BRANCH>
常用参数:
-c,-current-branch:只同步指定的远程分支,默认情况下,会同步所有的远程分支,但这样代码量会大
-d,-detach:脱离当前的本地分支,切换到manifest.xml中设定的分支。在实际操作中,这个参数很有用,当我们第一次sync完代码后,往往会切换到dev分支进行开发。如果不带该参数使用sync, 则会触发本地的dev分支与manifest设定的远程分支进行合并,这会很可能会导致sync失败
3. repo start
repo start <BRANCH_NAME> [<PROJECT_LIST>]
在sync完代码后,所有git库默认都是在一个匿名分支上(no branch),很容易会由于误操作导致丢失代码修改。
在第一次sync完代码后,可以通过该命令将git库切换到开发分支BRANCH_NAME,避免在匿名分支上工作导致丢失改动内容的情况。该命令是对
git checkout -b
和
git checkout
命令的封装。
4. repo upload
repo upload [PROJECT_LIST]
使用该命令,会将本地代码上传到远程服务器,一般为Gerrit服务器,Gerrit服务器的地址是在.repo/manifests.xml中指定的。如果没有指定PROJECT_LIST,那么upload会找出所有git库的改动;如果某个git库有多个分支,upload会提供一个交互界面,提示选择其中若干个分支进行上传操作。
三、使用实践
- repo init:初始化工程,指定代下载的分支
- repo sync -c --no-tags:下载代码,不获取标签
- repo start dev --all:本地所有git库切换到开发分支
- 在本地修改验证后,提交到本地
- repo upload:上传Gerrit服务器,等待review
总结
参考:https://blog.csdn.net/q1449660223/article/details/117991666
后续将持续更新
版权归原作者 梦醉诺坎普 所有, 如有侵权,请联系我们删除。