Git, ADB命令

Git 相关

1 使用克隆命令下载代码时想要下载到指定目录

cd 到对应目录呀

2 提交代码时想要分批提交, 比如我想先提交2个类, 提交之后我再提交3个类

git add -p  目前使用命令只查询到提交单个文件

使用 Android studio 创建一个changelist, 把要提交的代码放到这个里面, 提交这个 changelist(可批量提交)

3 已经有一个提交但是想覆盖掉

git commit --amend  

4 不想提交现在的修改但是此时需要切换到其他分支

步骤:
git stash //暂存当前文件

git checkout otherbranch //切换到其他分支 

git stash pop //在其他分支修改提交之后切换到原来分支执行命令, 回复暂存文件

5 合并分支

git merge  //将此分支合并到当前所在分支

6 merge 和 rebase

不得不引入一段知乎用户的回答,因为只有这段回答我看懂了:

链接:https://www.zhihu.com/question/36509119/answer/131513261

搞清楚这个问题首先要搞清楚merge和rebase背后的含义。先看merge,官方文档给的说明是:git-merge - Join two or more development histories together顾名思义,当你想要两个分支交汇的时候应该使用merge。根据官方文档给的例子,是master merge topic,如图:

				     A---B---C topic
                    /         \
               D---E---F---G---H master

然而在实践中,在H这个commit上的merge经常会出现merge conflict。为了避免解决冲突的时候引入一些不必要的问题,工程中一般都会规定no conflict merge。比如你在github上发pull request,如果有conflict就会禁止merge。所以才会有题主问的问题:在当前的topic分支,想要引入master分支的F、G commit上的内容以避免merge conflict,方便最终合并到master。这种情况下用merge当然是一个选项。用merge代表了topic分支与master分支交汇,并解决了所有合并冲突。然而merge的缺点是引入了一次不必要的history join。如图:

                     A--B--C-X topic
                    /       / \
               D---E---F---G---H master

其实仔细想一下就会发现,在引入master分支的F、G commit这个问题上,我们并没有要求两个分支必须进行交汇(join),我们只是想避免最终的merge conflict而已。rebase是另一个选项。rebase的含义是改变当前分支branch out的位置。这个时候进行rebase其实意味着,将topic分支branch out的位置从E改为G,如图:

                             A---B---C topic
                            /         
               D---E---F---G master

在这个过程中会解决引入F、G导致的冲突,同时没有多余的history join。但是rebase的缺点是,改变了当前分支branch out的节点。如果这个信息对你很重要的话,那么rebase应该不是你想要的。rebase过程中也会有多次解决同一个地方的冲突的问题,不过可以用squash之类的选项解决。个人并不认为这个是rebase的主要问题。综上,其实选用merge还是rebase取决于你到底是以什么意图来避免merge conflict。实践上个人还是偏爱rebase。一个是因为branch out节点不能改变的情况实在太少。另外就是频繁从master merge导致的冗余的history join会提高所有人的认知成本。

7 merge 和 rebase 遇到冲突 状态为 merging 或者 rebasing

rebase 操作的话,会中断rebase,同时会提示去解决冲突。解决冲突后,将修改add后执行git rebase –continue继续操作,或者git rebase –skip忽略冲突。

8 reset 撤销操作

git reset --hard HEAD // 放弃当前所有修改
git revert  // 重置提交 文件被还原
git reset  // 撤销提交到commitid 提交的文件恢复到本地 

9 删除现有工程git配置

find . -name ".git" | xargs rm -Rf

ADB 相关

启动和停止应用

adb shell am start PackageName //启动应用
adb shell am force-stop PackageName //停止应用

adb 命令截屏

adb shell /system/bin/screencap -p /sdcard/screenshot.png //截屏存储到 SD 卡
adb pull /sdcard/screenshot.png D:\\screenshot //拉取出来存到电脑

列出所有链接的设备

adb devices 

列出进程列表

adb shell ps

adb shell ps | grep com.yue //过滤进程

列举出所有包含的package内容

adb shell pm list packages [options] 
adb shell pm list packages com.lt

安装应用程序

adb install xxx.apk
adb install -r xxx.apk // 覆盖安装(保留缓存和数据)
adb install -s xxx.apk  // 安装apk到sd卡

卸载应用程序

adb uninstall package
adb uninstall -k package // 卸载时保留数据和缓存目录

查看 cpu 和 内存使用情况

adb shell top // 每隔一秒会刷新一次 cpu 和 内存情况
adb shell top -m 3 // 查看占用内存前3的应用
adb shell top -n 3 // 刷新3次内存信息(不指定-n参数的话默认每秒会刷新1次数据
adb shell top -m 3 -n 1 // 查看占用内存前3的应用,刷新1次

查看电池用量情况

adb shell dumpsys battery

模拟按键,这个真牛了

// 模拟输入,其中 %s 代表空格
adb shell input text "hello%sworld"

// 模拟按键,82 代表 KEYCODE_MENU 即菜单键
// 更多KEYCODE可以参考 http://developer.android.com/intl/zh-cn/reference/android/view/KeyEvent.html
adb shell input keyevent 82

// 模拟点击,屏幕上横坐标纵坐标分别为100 120的位置
// 要查看具体坐标值,可以打开开发者选项->指针位置
adb shell input tap 100 120

// 模拟滑动,从位置(0,1000)滑动到(800,600)
adb shell input swipe 0 1000 800 600

// 模拟长按,在位置(100,200)长按500毫秒
adb shell input swipe 100 200 100 200 500

adb 通过ip链接手机

adb connect ip地址 // 有时连不上需要链接usb 执行 adb tcpip 5555 重启端口

日志输出

adb logcat -s tag  // 查看指定 tag 日志
adb logcat -c // 清除log缓存

获取手机系统信息

adb shell cat /proc/cpuinfo     显示cpu信息
adb get-serialno    获取序列号
adb shell  cat /sys/class/net/wlan0/address    获取mac地址
adb shell getprop ro.product.model    获取设备型号
adb shell wm size    查看屏幕分辨率
adb shell wm density    查看屏幕密度

dumpsys 查看信息相关

activity:
adb shell dumpsys activity    显示当前所有activity信息
adb shell dumpsys activity top    查看当前应用的 activity 信息

package:
adb shell dumpsys package [package_name] 查看应用信息

内存:
adb shell dumpsys meminfo [package_name/pid] 查看指定进程名或者是进程 id 的内存信息

数据库:
adb shell dumpsys dbinfo [package_name] 查看指定包名应用的数据库存储信息(包括存储的sql语句)

Android 系统版本

adb shell getprop ro.build.version.release

修改设置

adb shell wm size 480x1024 //表示将分辨率修改为 480px * 1024px
adb shell wm size reset //恢复原分辨率命令

adb shell wm density 160 //表示将屏幕密度修改为 160dpi。
adb shell wm density reset //恢复原屏幕密度命令

adb shell 打开开发者选项界面

adb shell am start -a com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS

删除git配置 重新初始化

find . -name ".git" | xargs rm -Rf

git 遇到问题:

Fetch failed: ssh variant 'simple' does not support setting port   

解决办法:
在git bash中输入命令:

git config --global ssh.variant ssh

Android studio 遇到多项目调试时 点了 disable
解决方案: 此时需要删除 /Users/xxx/Library/Preferences 配置文件 相当于重置 Android studio 配置

这里还有很多好玩的命令:

https://github.com/mzlogin/awesome-adb

关注我的 Google Play 独立开发公众号
通过从零到一在 Google Play 开发出下载量 300万 APP 的经历,我将把很多精彩的故事分享到公众号,扫描下方二维码和我一起开发 APP 赚美元吧!

Git, ADB命令_第1张图片

你可能感兴趣的:(技术文章)