【3.工程开发】-基础gdb/shell/git
git
上线merge多次,回滚master?
保留merge前的分支,删除当前分支再切到新分支。git push -f origin feature_daily_xinghongyan_1:feature_daily_xinghongyan_1 不带feature_daily_xinghongyan_1就是直接删除
将某次提交提到另一个分支上。比如在master上不小心提交了,想改到feature_daily_xinghongyan_1中
git log -1 获取最后一次commit
git checkout feature_daily_xinghongyan_1
git cherry-pick 49c4780a0b8820142b82975becef6c9f5797556e
git push
git本地仓库有diff就会复制文件,svn存diff
svn没有暂存区,只能提交所有到远端
git diff --cache add后和远端对比 dir add 暂存 cm 远端 git diffs 是dir和暂存,搞清哪些是暂存命令,哪些是远端
撤销
git reset --hard ab5180f278db93248ca9c3eb20a00a8b71d0df61 //用于commit但是没有Push的情况
git push -f origin feature_daily_xinghongyan_1
指针网前指(soft),暂存区内容变远端(不带),工作区变暂存区(hard)
git revert ab5180f278db93248ca9c3eb20a00a8b71d0df61 //用于已经push的情况,但是只能撤回此次的。之后的提交并不撤回
要撤回Merge没有什么好方法。保留merge前的分支,删除当前分支再切到新分支。
git revert -m 1 回到merge之前主干状态,-m 2回到另一个分支的状态git revert ab5180f278db93248ca9c3eb20a00a8b71d0df61 //用于已经push的情况,但是只能撤回此次的。之后的提交并不撤回
要撤回Merge没有什么好方法。保留merge前的分支,删除当前分支再切到新分支。
git revert -m 1 回到merge之前主干状态,-m 2回到另一个分支的状态
shell
grep -nr 当前目录查
find . -type f |xargs cat |wc -l
find . -type f |xargs cat |grep function |wc -l
cat www.access.log | awk '{if($9>0) sum+=$9;num+=1 };END{print sum/num;print sum;print num}'
cat prize_access_log.20160921* | awk '{print $2}'|sort|uniq -c|wc -l
cat dirpc.log | awk '{if(match($0,"latency=([0-9]+)",m)){sum+=m[1];num+=1}};END{print sum/num;print sum;print num}'
tar -cf xx.tar xx
tar -xvf
split -2 hello split1_ -d -a 2
netstat -aon|grep 2515
telnet 10.94.121.45 8000
sed -n ‘开始行数,结束行数p’ 被截取文件 > 另存为文件 p打印 d删除
cat trace.txt|sed '1d' |cut -b 22-|grep " *-> Xiaoju" > trace
tree -d
du -sh .
gdb
gdb <program> [core dump]
gdb --pid <pid>
set args <args...>
run
s/step
n (进入函数)
f Continue until the current function re- turns.
c Continue normal execution.
frame
bt
p xx , p (A)pObj1
b xx ; info breakpoints ;
info frame
info registers
info locals
info args
汇编disassem $pc
:反汇编当前函数。简写为:disas $pc
。
si/stepi
多线程、进程
nfo inferiors 进程
info threads / thread n
set scheduler-locking on:只有当前调试线程运行,其他线程处于暂停状态。