Android开发过程中git、repo、adb、grep等指令的使用

时间:2022-04-17 02:04:03

chown

是一条在Unix系统中用于设置文件所有者和文件关联组的命令。 需要超级用户的权限才能执行此命令。只有超级用户和属于组的文件所有者才能变更文件关联组。非特权用户(非超级用户)如需要设置关联组可能需要使用chgrp命令。

# chown rob:developers strace.log

把strace.log的所有者设置为rob,文件的关联组设置为developers。

find指令的使用
    其语法为:find [起始目录] 寻找条件 操作
    find /etc -name a.txt  在/etc目录及其子目录里面查找a.txt文件
    find -name a.txt  在当前目录及其子目录里面查找a.txt文件(不添加目录则对应当前目录)
    find -name april* 在当前目录下查找以april开始的文件
    find /home -mmin +60 在/home下查60分钟前改动过的文件
grep指令的使用
    grep -r -n "要查找的东西" *  在当前目录及子目录下面查找
        -c:只输出匹配行的计数。

-i:不区分大 小写(只适用于单字符)。
        -h:查询多文件时不显示文件名。
        -l:查询多文件时只输出包含匹配字符的文件名。
        -n:显示匹配行及 行号。
        -s:不显示不存在或无匹配文本的错误信息。
        -v:显示不包含匹配文本的所有行。

adb指令的使用
  安装apk
     1.adb remount
     2.adb push  "你要安装的apk全路径" system/app
    或
     1.adb install -r "你要安装的apk全路径"
git指令
git配置文件
    /etc/gitconfig: 所有用户普遍适用的、系统的,git config --system选项
    ~/.gitconfig: 只适用该用户, git config --global选项
    .git/config当前项目.git目录中,只适用当前项目, .git/config 
    每一层都覆盖上一层,也就是优先级  .gitconfig  <  ~/.gitconfig  <  /etc/gitconfig  
下载代码
    ssh git@172.16.98.152 列出代码库
    git clone git@172.16.98.152:PXA968  FWS810(重命名为FWS810)下载代码
使用Gerrit时代码下载
    ssh gerrit gerrit ls-projects 列出有权限访问的所有版本库
   git clone gerrit:/MSM8x25-ICS-AP  下载代码MSM8x25-ICS-AP
    如果使用git clone git@172.16.98.152:MSM8x25-ICS-AP下载代码 可以使用git config remote.origin.url gerrit:/MSM8x25-ICS-AP 来更改服务器
    git push origin HEAD:refs/for/项目名称   提交代码
切换分支
    git branch -a   查看这个版本的分支  
    git checkout -b FWS920_b1 origin/FWS920_b1    创建一个新的分支并切换到新的分支上面
    git checkout FWS920 切换到FWS920这个分支下面
    git branch -D FWS920 删除FWS920这个分支(不能在该分支下面进行该操作)
提交代码流程
    git status   查看修改状态
    git add .        提交新添加的所有文件
    git commit      代码提交到本地
    git pull --rebase        更新本地分支
    git push         提交代码
还原修改
    git checkout -- 文件整个路径    还原文件 
    git reset --hard   还原所有修改
    git reset --soft HEAD^  提交commit发现有问题之后还原到未修改之前的状态
删除未被追踪的文件
    git clean -df 删除文件和目录(删除git status命令中所有untracked file,包括文件和目录)   
     -f   删除文件,
     -df  删除文件和目录
    git clean -dn  这个命令可以看看有哪此文件和目录会被删

-n   显示将要删除的文件和目录

保存修改
    git stash           保存当前修改
    git stash list      显示暂存列表
    git stash apply     恢复暂存列表最上面的一个
    git stash apply stash@2   恢复指定暂存
    git stash clear     清除stash
修改配置    
    git config --global core.editor vim  修改默认文本编辑器
    git config --global commit.template $HOME/.gitmessage.txt  修改提交模板
    git config --global user.name "John Doe"   配置用户名
    git config --global user.email johndoe@example.com  配置邮件地址
对比文件
    git difftool "文件名"   和服务器的该文件进行对比(文件名要路径)
    git difftool HEAD   直接和服务器代码进行对比(所有代码)
其它
    gedit .git/info/exclude  查看修改状态时的过滤文件
    gitk   打开版本控制界面
    git log  查看版本最新状况(谁提交的)
repo指令
切换分支
    repo init -m i800v-2050.xml((如果是新建目录,repo init -u gitserver:manifests.git -m i800JB-2050.xml))
    repo sync -j8
    repo start i800v --all
    repo list 可以查看repo所管理的projects
    repo status 可以查看本地修改的文件
    repo branch 可以查看每一个project所有的分支名称
    repo start 创建本地的工作分支,比如:repo start 分支名 --all为所有project创建分支,repo start 分支名 kernel 为kernel project创建分支名
    repo abandon 删除分支,用法和start差不多。比如:已经为kernel project创建了i800JB分支,用repo abandon i800JB kernel 命令,可以删除kernel project中的i800JB分支。如果执行repo abandon i800JB --all就会删除所有project上面名字为i800JB的分支。执行完repo abandon后,project会工作在no branch状态,还需手工start一个分支。
    repo forall 为所有project执行命令。比如:repo forall -c git tag XXXX_XXX_V1.0_SH 代表为每一个project加入tag
    repo init 初始化repo库,-u 代表url,-b代表branch,-m 代表manifest文件。比如:repo init -u gitserver:manifests.git -m i800JB.xml 代表的是从gitserver服务器上的manifests.git库中,选择i800JB.xml作为manifest文件。
这里没有-b,是由于目前所建立的manifests.git库中,仅有一个master分支。没有-b选项,默认是从manifests.git库的HEAD指针处取得manifest文件
如果没有-m选项,则代表使用的默认的manifest文件,默认的文件名称为default.xml
    repo overview 查看project里面没有提交的记录。
    repo upload 的时候,请用repo upload --re=REVIEW人员(比如zan.wang),系统会自动发邮件告知REVIEW人员,
    可以从device/qcom/msm8625/msm8625.mk文件里面看出当前的Project是哪个项目 
    可以在device/qcom/msm8625/这个目录下面使用git checkout -b H901 phicomm/H901创建分支,比使用repo start H901 --all更容易理解
gcc指令
     当你不用任何选项编译一个程序时, GCC 将会建立(假定编译成功)一个名为 a.out 的可执行文件. 例如, 下面的命令将在当前目录下产生一个叫 a.out 的文件: 
    gcc test.c
    ./a.out
    你能用 -o 编译选项来为将产生的可执行文件指定一个文件名来代替 a.out. 例如, 将一个叫 count.c 的 C 程序编译为名叫 count 的可执行文件, 你将输入下面的命令: 
    gcc -o count count.c 
    ./count
gdb 
    gcc -g -o tst test.c
        编译生成执行文件
    gdb tst
        启动GDB
    (gdb) l 
        <----- l命令相当于list,从第一行开始例出原码。
    enter键
        直接回车表示,重复上一次命令
        (gdb) break 16 <-------------------- 设置断点,在源程序第16行处。 
        (gdb) break func <-------------------- 设置断点,在函数func()入口处。 
        (gdb) info break <-------------------- 查看断点信息。
        (gdb) r <--------------------- 运行程序,run命令简写 ,在断点处停住
        (gdb) n <--------------------- 单条语句执行,next命令简写。
        (gdb) s <--------------------- 单条语句执行如果遇到函数则进入函数体内,step命令简写。
        (gdb) c <--------------------- 继续运行程序,continue命令简写。 
        (gdb) p i <--------------------- 打印变量i的值,print命令简写。
        (gdb) finish <--------------------- 退出函数。  
        (gdb) q <--------------------- 退出gdb。 
(gdb) help

List of classes of commands: 
aliases -- Aliases of other commands 
breakpoints -- Making program stop at certain points 
data -- Examining data 
files -- Specifying and examining files 
internals -- Maintenance commands 
obscure -- Obscure features 
running -- Running the program 
stack -- Examining the stack 
status -- Status inquiries 
support -- Support facilities 
tracepoints -- Tracing of program execution without stopping the program 
user-defined -- User-defined commands 
Type "help" followed by a class name for a list of commands in that class. 
Type "help" followed by command name for full documentation. 
Command name abbreviations are allowed if unambiguous.