git 和adb

news2025/1/14 1:14:39

一、git

1、git的作用

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

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

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

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

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

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

2、git的原理

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 xxxxxx@qq.com   #邮箱设置
$ 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的原理

通信流程

  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信息

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/780690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue中TodoLists案例_删除

与上一篇Vue中TodoList案例_勾选有三个文件变化了 App.vue&#xff1a;添加了一个deleteTodo根据id删除方法&#xff0c;传递给儿子组件MyList <template><div id"root"><div class"todo-container"><div class"todo-wrap"…

Android ObjectBox数据库的使用与详解

一、介绍 Room数据库 之前我已介绍了jetpack组件的数据库&#xff1a;Room&#xff0c;有小伙伴需要了解Room数据库可以查看这个地址&#xff1a;Android JetPack组件之Room数据库的集成与详解_android room数据库_蜗牛、Z的博客-CSDN博客 数据库的性能对设备来说很重要&#…

【雕爷学编程】Arduino动手做(168)---ATTINY85迷你USB开发板

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

【Spring MVC学习】连接 接收请求参数 响应返回参数

目录 前言&#xff1a;认识Spring MVC &#x1f337;1、什么是MVC&#xff1f; 一、建立连接&#xff08;5个注解&#xff09; &#x1f337;1、RequestMapping注解:注册接⼝的路由映射&#xff08;默认返回页面&#xff09; &#x1f337;2、ResponseBody注解&#xff1a…

从简单线性回归到TensorFlow深度学习

大家好&#xff0c;人工智能近年来变得越来越流行&#xff0c;学习人工智能的需求也随之增加&#xff0c;尤其是许多IT专业人士希望利用机器学习的强大功能&#xff0c;但面临不小的挑战&#xff0c;尤其是在理论和数学上。 步骤1&#xff1a;线性回归 线性回归是一种统计学中…

Centos7:http/PhP升级

系列文章目录 RHCE第0章&#xff1a;RHCE开始前的准备 RHCE第1章&#xff1a;Web服务器&#xff08;上&#xff09; RHCE第1章&#xff1a;Web服务器&#xff08;下&#xff09; RHCE第2章&#xff1a;DNS服务 RHCE第3章&#xff1a;DHCP服务器 RHCE第4章&#xff1a;Firewall…

第一天基础名词

文章目录 一、域名1、域名的概念2、域名注册3、域名的分类 二、DNS1、DNS的概念2、DNS解析3、本地hosts文件与DNS的关系4、如何查看本地Hosts文件 三、CDN1、CDN的概念2、CDN原理&#xff08;1&#xff09;回顾域名解析&#xff08;2&#xff09;CDN原理 3、常见DNS攻击 四、脚…

【C语言】结构体与offsetof实现

远看山有色&#xff0c;近听水无声。春去花还在&#xff0c;人来鸟不惊。 — 唐代王维《画》 这篇博客我们会详细介绍结构体相关知识&#xff0c;干货满满。 结构体的声明&#x1f340; 一般来说结构体应该有成员列表和变量列表这两个基础的模式。 例如描述一个学生&#xf…

Windows下YUICompress实现js、css混淆压缩

首先&#xff0c;我们针对Linux下的部分命令进行Windows系统的对应实现 ls————cmd /c dir/b rm————cmd /c del mv————cmd /c move pwd————cmd /c chdir 注&#xff1a;cmd /c是执行完命令后关闭命令行窗口、cmd /k是执行完命令后不关闭命令行窗口、cmd /c sta…

Vue第五篇:电商网站登录时vuex的使用

页面&#xff1a; 代码资源见&#xff1a;https://download.csdn.net/download/benben044/88071987 其中css使用开源库的UI&#xff0c;Main里面的元素是一张截图。 通过vuecli脚手架生成的代码架构如下&#xff1a; 一、入口组件App.vue解析 主页面主要由两部分组成&#x…

Leetcode-每日一题【114.二叉树展开为链表】

题目 给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。 展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例…

OSI七层模型和TCP/IP四层模型以及五层模型

OSI七层模型&#xff08;Open System Interconnect&#xff09;即开放系统互连参考模型&#xff0c;是由ISO&#xff08;International Organization for Standardization&#xff09;国际标准化组织提出的&#xff0c;用于计算机或通信系统间互联的标准体系。 从上到下可分为…

Flask 导航栏,模版渲染多页面

项目结构 app.py from flask import Flask, render_templateapp Flask(__name__)app.route(/) def index():return render_template(index.html)app.route(/secondpage) def secondpage():return render_template(secondpage.html)app.route(/threepage) def threepage():ret…

Linux驱动开发实战(一)——设备驱动模型

文章目录 前言设备驱动模型概述设备驱动模型的功能sysfs文件系统sysfs文件系统的目录结构 设备驱动模型的核心数据结构kobject结构体设备属性kobj_type 注册kobject到sysfs中的实例设备驱动模型结构kset集合kset与kobject的关系kset相关的操作函数注册kobject到sysfs中的实例实…

绘出「星辰大海」:华为云Astro轻应用新手指南-第一章

第1章 旅程的开端 发现Astro轻应用地图 第1站&#xff1a;创建账户 首先&#xff0c;你需要在华为云Astro官网注册专属账号。若已有华为账户&#xff0c;可直接登录。 在官网点击「立即使用」&#xff0c;即可跳转至「登录界面」 在「登录界面」点击「注册」&#xff0c;注册…

后端(四):博客系统项目

咱们在这里实现的是后端项目&#xff0c;前端代码就提一提&#xff0c;不全做重点介绍&#xff0c;在开始讲解这个博客系统项目之前&#xff0c;我们先看看这个项目的前端界面&#xff1a; 登录界面&#xff1a; 个人主页&#xff1a; 博客详情页&#xff1a; 写博客页&#x…

Python实战

官方文档 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 LearnPythonPython 实现功能点demo

Mac苹果系统安装双系统Windows10 Windows11 BOOTCAMP

Mac系统安装双系统Windows10 BOOTCAMP详细 1.下载Windows系统2.开始安装3.安装驱动4.默认启动5.备注 1.下载Windows系统 注意一下所有安装全程接充电器操作&#xff0c;以免安装过程中电脑断电带来不必要影响。 从下列方式选择合适的系统进行下载。 MSDN https://msdn.itelly…

【NLP】无服务器问答系统

一、说明 在NLP的眼见的应用&#xff0c;就是在“ 当你在谷歌上提出一个问题并立即得到答案时会发生什么&#xff1f;例如&#xff0c;如果我们在谷歌搜索中询问谁是美国总统&#xff0c;我们会得到以下回答&#xff1a;Joe Biden&#xff1b;这是一个搜索问题&#xff0c;同时…

概率论的学习和整理--番外14:如何理解 dutu输光定理

解决问题 1 dutu 拿100是赌一次好&#xff0c;还是100次1元的好&#xff1f; 一般的地方&#xff0c;如果不是公平赌局&#xff0c;而期望是负数的话 其实du次数越多越亏 2 1%就基本能决定胜负 了 3 千万不要陷入常人思维&#xff0c;用筹码数量思考&#xff0c;输光为止&am…