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 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 赚美元吧!