git 和adb

一、git

1、git的作用

git是一个版本控制系统,是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。

        我的理解就是代码管理器:

                        第一点你可将代码备份到git仓上;

                        第二点可记录的你修改记录;

                        第三点可回退版本信息(就是代码修改后,又不想修改了,可回退版本);

                        第四点可多人协调管理代码(将小组的代码汇总到一个远程仓管理)。

2、git的原理

git 和adb_第1张图片

git四个区:Remote(远程仓)、History(本地仓)、Stage(暂存区)和Working(工作区)

        Remote(远程仓):每次小组提交代码托管的地方,供组长管理代码。

        History(本地仓):一个存放在本地的版本库;HEAD 是当前的开发分支(branch)。

        Stage(暂存区):可以把所有的更新放在暂存区;相当于代码提交的缓存区。

        Working(工作区):进行版本控制的目录和文件组成了工作空间;git初始化形成。

3、git命令

# 仓库与配置
$ git init                                  # 新建仓库
$ git clone                                 # 克隆所有代码
$ git config                                # 配置git
$ git config --global user.name "xxxxxx"   #名称设置
$ git config --global user.email [email protected]   #邮箱设置
$ git config --global  --list                     #查看自己git的所有配置信息
$ git config --list --show-origin                 #查看git所有配置及其所在文件


# 文件与代码
$ git add                                  # 将修改的文件添加到暂存区
$ git rm                                   # 删除工作区文件,并将这次删除操作放入暂存区
$ git mv                                   # 改名文件,并将这次改名放入暂存区
$ git commit                               # 将暂存区的文件提交到本地仓库
$ git commit -m 'initial project version'     #快速提交,并给出说明

$ git commit --amend                      #提交修改
$ git clean -df                           #清除未跟踪的文件
$ git clean -dfx                          #将未进入跟踪文件的也清除
$ git cherry-pick commitId                #拉取本地其他分支的提交到当前分支

# 分支
$ git branch                              # 查看所有本地分支
$ git branch -r                           # 查看所有远程分支
$ git branch -a                           # 查看所有本地和远程分支
$ git branch [branch-name]                # 新建分支,但依然留着当前分支
$ git branch -d [branch-name]             # 删除本地分支
$ git branch -dr [branch-name]            # 删除远程分支
$ git checkout [branch-name]              # 切换到指定分支
$ git checkout -b                         # 新建分支,并切换到该分支

# 查看信息
$ git tag                                  # 查看所有tag
$ git status                               # 查看当前仓库下修改的文件
$ git log                                  # 查看当前分支的版本历史
$ git log --shortstat                      #查看patch log
$ git log -p -3 filename                     #显示最近的3次提交
$ git diff                                 # 查看暂存区与工作区的差异

# 分支
$ git branch --set-upstream-to [remote] [branch]     #将本地分支与远程分支关联
$ git fetch [remote]                                 #下载远程仓库的所有修改
$ git remote -v                                      #查看所有远程仓库
$ git pull [remote] [branch]                         #下载远程仓库的修改并与本地分支合并
$ git push [remote] [branch]                         #上传本地分支到远程仓库

# 撤销
$ git checkout [file]                   # 将暂存区的文件恢复到工作区
$ git checkout .                        # 将暂存区的所有文件恢复到工作区
$ git checkout -- .                     # 清空工作区的修改(使用时要注意)
$ git reset                             # 将commit到本地仓库的文件撤回到工作区
$ git revert                            # 撤销分支上指定的commit
$ git reset --hard HEAD~n             # 回退到n个版本
$ git reset --hard FETCH_HEAD        #复位到没有修改的分支代码

二、adb

1、adb的作用

         Android 调试桥 (adb) 是一种功能多样的命令行工具。

        它包含三个组件:客户端、守护程序 (adbd)和服务器 (adb server)。

 客户端:主要用于发送命令,adb client在开发机器上运行,你可以通过发出 adb 命令从命令行终端调用客户端,它主要的工作是:解析push、shell、install等命令的参数,做必要预处理,然后转移为指令或数据,发送给adb server。

守护程序 (adbd):是运行在Android设备(真机/模拟器)后台的一个进程,它是由init进程启动的,并且系统一开机就已经启动,它的主要作用是处理来自 adb server的命令行请求,然后获取对应Android设备的信息,再将结果返回给adb server。

服务器 (adb server):是运行在PC上的一个后台进程。

        它有两个作用:(1)检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止;

                                 (2)将adb client的请求通过usb或者tcp的方式发送到对应的adbd上。

2、adb的原理

git 和adb_第2张图片

通信流程

  1. 通过命令行界面直接或间接的调用某个adb命令,比如adb install或者adb devices。
  2. 这时候adb进程会检查是否启动了adb server。如果未启动,则fork出一个子进程作为adb server,而这个fork出的进程将常驻PC端,监听来自Client端的请求。
  3. adb server查找当前连接的真机或者模拟器,并接收来自Client端发出的请求。
  4. adb server处理请求:如果是本地能直接处理的请求比如:adb devices就直接处理,如果是本地处理不了的请求就会转发给连接的真机或者模拟器来进行处理,可以通过数据线和TCP/IP的方式通信。
  5. 位于真机或者模拟器后台的adbd进程接收到请求后,通过JDWP协议转发给对应的Java虚拟机进程处理。
  6. adbd将处理后的结果返回给adb server。
  7. adb server再将结果返回给Client,这时候我们就在命令行界面中看到展示结果了。adb server再将结果返回给Client。

3、adb的命令

#查看信息
$ adb start-server     #开启adb服务
$ adb kill-server       #停止服务
$ adb devices         #查看设备信息
$ adb version         #查看adb版本
$ adb help            #adb帮助文档
$ adb get-state       #查看设备状态 device(正常连接),offline(连接异常),unknown(没有连接)
$ adb get-devpath     #获取设备路径

#常用命令
$ adb shutdown          #设备关机
$ adb reboot            #设备重启
$ adb root              #获取root权限
$ adb remount           #获取读写权限
$ adb unroot            #取消root权限
$ adb connect    192.168.3.142:5555   #远程连接即无线调试 必须在同一个网关下
$ adb disconnect 192.168.3.142:5555   #断开链接
$ adb install packsge(包路径)           #安装,但不覆盖
$ adb install -r packages(包路径)        #保留数据及缓存文件安装新包(覆盖安装)
$ adb shell pm install /scard/Download  #安装在手机上的apk
$ adb install E:/aa.apk                  #安装在电脑上的apk
$ adb push C:\Users\Administrator\Desktop\1.gif /sdcard/    #push 电脑文件拉向手机
$ adb pull /sdcard/1.gif C:\Users\Administrator\Desktop\     #pull 手机文件拉向电脑
$ adb shell "pm list packages | grep ls"                      #查找ls软件包
$ adb uninstall com.ls                                      #卸载ls的APP

#间接操作
$ adb shell screencap /sdcard/1.png                        #当前窗口截屏保存到手机
$ adb exec-out screencap -p > 1.png                        #截图保存到电脑
$ adb shell screenrecord > 1.mp4                           #屏幕录像,Ctrl+c停止录制

#adb查看应用
$ adb shell pm list packages                               #所有应用
$ adb shell pm list packages -s                            #系统应用
$ adb shell pm list packages -3                            #三方应用
$ adb shell pm list packages | findstr setting              #过滤应用   这个find
$ adb shell pm clear                                      #清除应用数据和缓存

#连接方式
$ adb tcpip 5555                                        #设置监听TCP/IP的端口(端口号5555)
$ adb connect 192.168.1.199 (Android设备IP地址)       #无线连接手机
$ adb usb                                              #使用回usb调试 (有线连接)

#日志
$ adb logcat#查看日志
$ adb logcat -v time #打印详情日志,会记录当前的所有操作行为以及产生的结果,默认持续监听,按下Ctrl+c即可结束
$ adb logcat -v time > D:\log.txt #保存日志到电脑
$ adb logcat -f /sdcard/1.txt           #保存日志到手机
$ adb logcat | findstr com.android.bluetooth #保存指定包名的日志
$ adb logcat -c                         #清除之前的日志输出
$ adb logcat | findstr ActivityManager  #查看当前正在运行的Activity
$ adb logcat | findstr Displayed        #查看当前正在运行的Activity
$ adb bugreport                       #查看bug报告
$ adb logcat -b radio                   #无线通讯的日志
$ adb shell dmesg                     #内核日志
$ adb shell service list                 #查看后台services信息

你可能感兴趣的:(嵌入式的开发,git,adb)