目录
- 1、git
- 1、commit之后不push想撤销commit:
- 2、一建创建分支:
- 3、查看git stash中保存的信息
- 4、应用git stash的修改
- 5、清除git记录
- 6、查看某个文件某行的最近提交记录
- 7、查看某个文件某行的历史提交记录
- 7、github使用--amend修改提交
- 8、同步远程分支到本地
- 9、gerrit提示Merge Conflict
- 10、检出远程分支
- 11、修改gerrit上某个文件的读写权限
- 12、git查看分支图形
- 13、git push
- 14、git cherry-pick
- 15、github revert
- 16、git 新建本地分支并提交到远程
- 17、删除untracked files
- 18、git-fork多人协同开发,代码同步与提交
- 19、合并两条提交
- 20、修改commit名称
- 21、github回滚(删除提交记录)
- 22、git reset --soft HEAD~
- 23、github提交pull request
- 24、删除远程分支
- 25、打patch
- 26、应用patch
- 2、grep
- 3、其他
- 4、代码编译
- 5、adb命令
- 6、Android导入整机源码
- 7、Windows、Ubuntu之间共享文件
- 8、常用工具
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/