repo使用

wifi adb 不能连接

setprop service.adb.tcp.port 5555
setprop persist.service.adb.enable 1

git config --global user.email “you@example.com”
git config --global user.name “Your Name”

Repo使用命令

新建常用命令

  1. 下载代码
    repo init -u “ssh://用户名@172.30.3.6:29418/manifest”
    Fix: 目前gerrit 在init 末尾加 -b {branch} 指定下载指定分支有权限问题,本周解决;
    代码下载后务必明确切换所有仓库分支,避免后续分支不明确,导致一系列问题
  2. 分支切换
    repo forall -c git checkout {branch}
  3. 同步代码
    repo sync
    repo sync framework/base //子库路径
    repo sync之前要确认{代码根目录}/…/.repo/manifest/default.xml 所处的分支,要与代码所在分支一致,否则要手动切换至一致;
    repo forall -c git pull
    使用此方式不需要考虑分支与manifest是否一致
  4. 提交代码
    为避免出错最好各仓库单独提交
    git add {file}
    git comm -m “MGOS-XXX: xxxxxxxxxxxxxxxxxxxxxx”
    git push orgin HEAD:refs/for/{branch}
  5. 查看各仓库改动
    repo forall -c “pwd; git status -uno”
    返回当前仓库路径;查看除未追踪文件外所有改动
  6. 删除分支
    repo forall -c “git branch -D 分支”
  7. 脱离分支
    repo sync -d
  8. 回退版本信息
    git reset --hard HEAD^ //上一个版本就是HEAD^ ,上上一个版本就是HEAD^^
    git reset --hard < commitId>
  9. 创建分之
    repo start jni . 或者 git checkout -b jni
  10. git checkout
    git checkout . //撤销 工作区的所有改动, 返回 当前分支 的 上一个提
    git checkout < commitId> //返回到 某一个 提交
    git chekcout < branchName> //切换分之
  11. 提交
    git commit --amend -s 如果git commit --amend --no-edit不编辑
    [XXX][XX] content
    jra版本
    repo upload . --no-verify
    错误处理:Unpack error, check server log
    git push ssh://xxx/platform/frameworks/base HEAD:refs/for/XXX --no-thin

使用repo forall -c + git 即与单独操作git没有什么区别,灵活使用repo forall -c “”,引号内可以使用组合命令以 ; 分开,即可在各仓库执行组合命令。

本地没有分之:新建分之 git checkout -b master origin/master
repo start --all F80XB

repo 切换分支
repo forall -c git checkout F80XB

代码提交:
git commit -m “jira任务号:”
git push origin HEAD:refs/for/master
git push originHEAD:refs/for/F80XB

删除本地分支:
repo forall -c git checkout master
repo forall -c git branch -D F80XB
repo forall -c git checkout F80XB

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

git 回退到某一条的提交 git reset --hard commitID

repo init –u <URL> [<OPTIONS>]

初始化命令
-u: 指定连接到的manifest仓库地址
-m: 选择仓库中某个manifest文件,如果没有设置,就使用default.xml
-b: 选择一个maniest仓库中的一个特殊的分支或修正版本
repo init -u “ssh://zhangzhihao@172.30.3.6:29418/manifest”

repo sync

同步代码
repo sync -c -j4
-j : 多任务,一般8核心可以开到16任务,过多会起反作用
-c: 只下载当前分支代码
-d: 让工程回退到manifest指定的版本
-f: 如果某个工程同步失败,继续同步

repo start [–all | …]

创建并切换分支
刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b命令的封装
repo start --all master
git 命令为:git checkout -b master origin/master

repo checkout

切换分支
实际上是对git checkout命令的封装,但不能带-b参数,所以不能用此命令来创建特性分支
repo checkout […]
repo checkout crane-dev
repo checkout crane-devplatform/buildplatform/bionic

repo branches

查看分支
repo branches
repo branches platform/build platform/bionic

repo diff

查看工作区文件差异
实际是对git diff命令的封装,用于分别显示各个项目工作区下的文件差异
repo diff—查看所有项目
repo diff platform/build platform/bionic—只查看其中两个项目

repo stage

把文件添加到index表中
实际是对git add --interactive命令的封装、用于挑选各个项目工作区中的改动以加入暂存区。

repo prune

删除已经合并分支
实际上是对git branch –d命令的封装,该命令用于扫面项目的各个分支,并删除已经合并的分支
repo prune [<project>…]

repo abandon

删除指定分支
实际上是对git branch –D命令的封装
用法: repo abandon 分支名 [<project>…]

repo status

查看文件状态
实际上是对git diff-index、git diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态
$repo/repo status platform/bionic

repo push

repo push org
这是新添加的指令,用于向服务器提交代码,使用方法:
repo push <remotename> [–all |<project>…]

repo update[ project-list ]

上传修改的代码 ,如果你本地的代码有所修改,那么在运行 repo sync 的时候,会提示你上传修改的代码,所有修改的代码分支会上传到
Gerrit

repo upload

上传本地提交至服务器
repo upload相当于git push,但是又有很大的不同。它不是将版本库改动推送到克隆时的远程服务器,而是推送到代码审核服务器(Gerrit软件架设)的特殊引用上,使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为一个待审核的修改集,并进入代码审查流程,只有当审核通过后,才会合并到官方正式的版本库中

repo download

下载特定的修改版本到本地,主要用于代码审核者下载和评估贡献者提交的修订
repo download {project change [patchset]}…

merge(合并多个分支)

repo forall –p –c git merge topic

repo selfupdate

用于repo自身的更新

repo list

查看本地repo管理的所有projects

repo版本回退

$ repo forall -c ‘commitID=`git log --before “2017-03-17 07:00” -1 --pretty=format:"%H"`; git reset --hard $commitID’
参数说明:
forall  操作分支中的所有仓库
-c  只操作当前分支
–before  早于指定时间点的提交记录
-1  只显示最近的1条记录(注意这是数字 1 ,如果要显示 2 条就写 2,以此类推)
“2017-03-17 07:00”  希望回退到的日期(时间点)
–pretty  以指定格式显示提交记录%H  提交记录的hash值,即commit id(其它格式及更详细的信息可以使用命令git log --help打印帮助信息并查看“PRETTY FORMATS”小节)命令含义: 这条repo命令的实质就是在当前分支的每个仓库下执行[Git] log命令,找出该仓库下符合时间条件的第一个提交记录,然后对该仓库执行[git]+ reset --hard操作

使用repo+gitlab管理AOSP源代码

1,配置repo
在工作目录下创建bin文件夹
mkdir ./bin
将bin目录添加到系统环境变量
PATH=./bin:$PATH
下载repo脚本(清华源)
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
更新
repo的运行过程中会尝试访问官方的git源更新自己,可以使用tuna的镜像源进行更新
修改REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’

2,创建mainfest文件
为方便管理在Gitlab上创建PLATFORM文件夹(group),在PLATFORM下创建manifest空仓库
git clone manifest 到本地,添加default.xml,如下:

<?xml version="1.0" encoding="UTF-8"?> 将dafault.xml提交至远程仓库.

3,创建AOSP 仓库
在Gitlab/PLATFRORM 下创建aosp源码目录
创建abi,art空仓库,在源码目录init,上传源码到远程仓库。
务必先初始化仓库,再去做repo sync下载测试。

4,修改manifest
修改default.xml 将abi、art仓库地址添加进来

<?xml version="1.0" encoding="UTF-8"?> path代表clone到本地的路径; name代表git仓库在服务器为相对路径,与fetch组成仓库的下载地址:${remote fetch}/${project name}.git

5,下载测试
初始化repo环境
repo init -u ${manifest对应git仓下载的url地址}
repo init -u “ssh://zhangzhihao@172.30.3.6:29418/manifest”
同步代码
repo sync

6,测试无误重复第三步将所有仓库添加到远程
使用脚本自动提交代码

all=`ls .`
for i in $all
do
    if [ -d $i ]
    then
        echo "[$i]"
        cd $i
        git init
        git remote add origin git@gitlab.zhidaoauto.com:ecos/os/F80X/$i.git
        git add -f  .
        git commit -m "Initial $i"
        git push -u origin master
        echo $i
        cd ..
    fi
done 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值