常用命令及工具

目录

1、git

1、commit之后不push想撤销commit:

git reset --soft HEAD^

2、一建创建分支:

repo start --all master

3、查看git stash中保存的信息

git show stash@{1}

4、应用git stash的修改

git stash apply stash@{1}

5、清除git记录

git reset --hard origin/master

6、查看某个文件某行的最近提交记录

git blame -L 行数 文件绝对路径

7、查看某个文件某行的历史提交记录

git log -L 110,110:路径

7、github使用–amend修改提交

git push --force origin master:分支名
需添加参数–force

8、同步远程分支到本地

git checkout -b 本地分支名 origin/远程分支名
如果创建的本地分支没有跟踪到刚拉下来的远程分支,可以使用-u 或 --set-upstream-to 选项运行 git branch 来显式地设置:
git branch -u origin/serverfix

9、gerrit提示Merge Conflict

cd ~/projects/pan #切换到pan项目 

git branch #查看分支情况 

git checkout master #选择分支 

git fetch origin #fetch与pull的区别,自己再搜吧~

git rebase origin/master #查看有“CONFLICT (content): ”的地方,手工解决冲突后,下一步 

git add dev/controller/web/index.php #这只是一个举例,即要先add操作 

git rebase --continue 

git push origin HEAD:refs/for/master #OK了

10、检出远程分支

git checkout -b 本地分支名x origin/远程分支名x

11、修改gerrit上某个文件的读写权限

git update-index --chmod=+x buildApk.sh
git commit && git push

12、git查看分支图形

git log --oneline --graph --decorate --all
–oneline 日志单行显示
–graph 分支图显示
–decorate 可显示分支名称
–all 显示所有分支

13、git push

git push <远程主机名> <本地分支名> <远程分支名> ,例如 git push origin master:refs/for/maste

13.1

git push origin master
如果远程分支被省略,如上则表示将本地分支推送到与之存在追踪关系的远程分支(通常两者同名),如果该远程分支不存在,则会被新建

13.2

git push origin :refs/for/master
如果省略本地分支名,则表示删除指定的远程分支,因为这等同于推送一个空的本地分支到远程分支,等同于 git push origin --delete master

13.3

git push origin
如果当前分支与远程分支存在追踪关系,则本地分支和远程分支都可以省略,将当前分支推送到origin主机的对应分支

14、git cherry-pick

git cherry-pick <commit id>

15、github revert

git revert -n 版本号 如果有冲突先处理冲突
git commit -m 版本名
git push

16、git 新建本地分支并提交到远程

先建立本地的分支,并切换到该分支上
git branch hello_git_branch
git checkout hello_git_branch
push到远程仓库
git push origin hello_git_branch
由于刚才我们为远程仓库起了一个别名,那么这里就可以使用别名origin调用

这里的含义是将hello_git_branch这个分支提交到远程仓库上面。如果远程仓库没有这个分支,那么也会新建一个该分支。

当然,也可以指定提交到远程仓库的某个分支上。
如下,是将hello_git_branch分支提交到远程仓库的master上面
git push origin hello_git_branch:master

17、删除untracked files

17.1 删除 untracked files

git clean -f

17.2 untracked 的目录也一起删掉

git clean -fd

17.3 untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)

git clean -xfd

17.4 建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删

git clean -nxfd
git clean -nf
git clean -nfd

18、git-fork多人协同开发,代码同步与提交

18.1 将fork的代码克隆到本地

git clone my-fork-project master

18.2 将fork的源项目地址进行关联(这里的upstream随意填写和origin同级 相当于一个远程仓库的关联)

git remote add upstream origin-fork-project // (fork的别人的源仓库地址)

18.3 获取并合并upstream代码到本地

git fetch upstream
git merge upstream/master// 或者直接(fetch更安全)
//git rebase upstream/[branch_name]
为了不多一条无聊的合并提交,建议使用rebase
git pull upstream master

18.4 提交代码并推送到自己的远程仓库

git add
git commit -m 'merge upstream'
git push

18.5 将自己提交的代码推送到原作者的远程仓库(需要权限),如果没有权限可以去github新建pull request, 发起拉请求之前应先同步原作者代码

git push upstream master

19、合并两条提交

19.1 git rebase -i 提交哈希值(需要合并提交的前一个提交)

19.2 根据选项选需要的操作,把选项写到提交的哈希值上(一般是把前一个提交合并到后一个提交),保存退出

19.3 git status查看现在状态,如果冲突就解冲突,然后gir rebase --continue

19.4 git push -f 强推到代码仓,因为执行了rebase操作

20、修改commit名称

git show 提交哈希值 --name-only
然后直接修改

21、github回滚(删除提交记录)

git log
git reset --hard commit-hash
git push origin HEAD --force

22、git reset --soft HEAD~

https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E7%BD%AE%E6%8F%AD%E5%AF%86

23、github提交pull request

代码仓库主线分子:master;拉取代码到本地同时创建开发分支dev并提交到代码仓。

23.1使用以下步骤产生一个无聊的提交:

git checkout dev
git pull origin master
git add .
git commit -m 'your message'
git push
原因在于:使用git pull命令其实先执行了一次git merge操作,git会找到两个分支的公共祖先节点,做一个简单的三方合并,其结果就是产生一个新的快照并且自动创建一个新的提交指向它。图示如下:
执行前:
在这里插入图片描述

执行后:
在这里插入图片描述

23.2 使用以下步骤不会产生无聊的提交:

git checkout master
git pull//更新主线代码
git checkout dev
git rebase master//直接在dev分支上对master分支变基
git add .
git commit -m 'your message'
git push
原因在于:rebase命令会首先找到这两个分支的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 , 最后以此将之前另存为临时文件的修改依序应用。
执行前:
在这里插入图片描述

执行后:
在这里插入图片描述

24、删除远程分支

git push origin --delete serverfix

25、打patch

git diff Test.java > test.patch

26、应用patch

git apply xxx.patch

2、grep

1、全局搜索

grep -rn 'string'

3、其他

1、Ubuntu16.04下无法使用jd-gui,缺少32位的依赖库:

sudo apt-get install libgtk2.0-0:i386 libxxf86vm1:i386 libsm6:i386 lib32stdc++6

2、jar包解压及压缩:

解压javalib.jar这个jar包:
jar -xvf javalib.jar
把当前路径下的所有文件打包到javalib.jar包中:
jar -cvfM0 javalib.jar ./

3、Ubuntu下安装notepad++

sudo snap install notepad-plus-plus

sudo snap install wine-platform-runtime

4、代码编译

4.1 配置环境

source build/envsetup.sh
lunch

4.2 fastboot刷system.img

4.1 进入fastboot模式

adb reboot bootloader

4.2 查看是否有设备

fastboot devices

4.3 擦除原先数据

fastboot erase system
fastboot erase cache
fastboot erase config
fastboot erase data
fastboot erase logs
fastboot erase factory

4.4 flash

fastboot flash boot boot.img
fastboot flash system system.img
fastboot flash recovery recovery.img

4.5 重启

fastboot reboot

5、adb命令

5.1 抓当前activity

ubuntu:
adb shell dumpsys activity activities | grep -i run
windows:
adb shell dumpsys activity | findstr "mFocusedActivity"
adb shell dumpsys window | findstr mCurrentFocus

5.2 wifi adb

1、使用USB数据线连接手机和电脑,打开终端;输入adb devices后可以看到设备
2、adb tcpip 端口号 如adb tcpip 5555
3、断开手机和电脑的连接
4、adb connect 设备IP:端口号 如adb connect 10.13.74.228:5555
连接成功后记得允许调试

5.3 杀进程

1、adb shell
2、am force-stop 包名

5.4 更多的adb命令

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

6、Android导入整机源码

6.1、生成ipr文件

$ source build/envsetup.sh
$ lunch sdk-eng
make idegen && development/tools/idegen/idegen.sh

6.2、设置依赖

6.2.1 打开project Structure

6.2.2 设置jdk

在SDKs里添加一个新的 jdk 并且删除 classpath 中的所有jar 包

6.2.3 设置AOSP 项目依赖

在modules里把 android 项目原本的依赖删除, 并设置上我们之前添加的 jdk

6.2.4 设置编译处理的 R 目录为源码目录

右键 R 目录, 在那点击 Sources, 将其设置为源码目录

完成之后,接下来 Synchronize Project 即可安心的看源码了, 而且没有错误提示, 也可以任意跳转了

7、Windows、Ubuntu之间共享文件

7.1 系统之间设置共享文件夹

https://www.cnblogs.com/heguoyuan/p/9902446.html

7.2 使用SMB(linux共享给Windows)

7.2.1 安装smb

yum -y install samba samba-client samba-common

7.2.2 设置SMB共享目录

vim /etc/samba/smb.conf  ,在最后加入想要共享的文件夹:
     [rhhhome]                  //共享名称
         path = /home/rhh       //共享文件夹路径
         writeable = yes        //是否可写
         guest ok = yes         //是否允许GUEST访问

7.2.3 设置SMB用户:

用root登陆,

smbpasswd -a rhh  //增加SMB用户,同时会提示设置密码
smbpasswd –x rhh  //删除SMB用户

7.2.4 改smb为自启动

systemctl restart smb  //重启命令
systemctl enable smb   //修改为开机启动命令
systemctl status smb   //查看状态命令

7.3.5 在Windows系统地址栏输入linux系统Ip即可访问共享文件夹

8、常用工具

8.1 数据库

dbeaver/SQLiteStudio绿色免安装,SQLiteStudio有linux版本

8.2 抓包

fiddler

8.3 投屏调试

scrcpy,需下载软件包使用。
在这里插入图片描述

8.4 android反编译

decompile-apk,GitHub地址:
https://github.com/venshine/decompile-apk/releases
在这里插入图片描述

8.5 OpenGrok

部署OpenGrok服务器常用于托管android源码,实现源码的快速搜索。

8.6在线绘图

绘制UML图推荐draw.io:
https://app.diagrams.net/
绘制时序图推荐websequencediagrams:
https://www.websequencediagrams.com/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值