开发必备工具总结

开发必备工具

为了提高开发效率,总结必备工具, 包括git, vim, tmux、Linux常用工具以及内存泄漏检测工具等等。待逐渐补充

1. git

git以及svn都是版本管理工具。现总结git如下

  1. 配置个人信息
    git config --global user.email “"
    git config --global user.name "

  2. 配置颜色
    git config --global color.diff auto
    git config --global color.status auto
    git config --global color.branch auto

  3. 查看相关
    git log --author=<>
    git log –p -1 看最近提交的改动内容
    git show // 查看diff
    git branch –a //查看所有分支
    git branch //查看本地分支
    git checkout 分支切换,切换到master分支
    git pull origin master
    git pull --rebase
    git diff: 查看local和remote的区别
    git diff origin master
    git reset --hard

  4. 提交代码
    git status 查看本地库修改
    git checkout – 取消对文件的修改。还原到最近的版本,废弃本地做的修改。
    git add *.h *.cpp
    git commit -a
    或者git commit -m “commit code”
    git add -u
    git add -A

  5. 撤销代码
    git reset --soft HEAD^

撤销git add并保留本地修改
文件退出暂存区,但是修改保留:

git reset --mixed

撤销所有的已经 add 的文件:

git reset HEAD .

撤销某个文件或文件夹:

git reset HEAD  -filename
  1. 代码管理
    git cherry-pick 可以选择某一个分支中的一个或几个commit(s)来进行操作
    git merge 合并代码
    假设:你需要将master分支代码合并到临时分支master-dev-temp
git checkout master;
git pull;
git checkout master-dev-temp;
git merge master;

git stash save:
备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
git rebase -i 聚合代码,去掉和自己提交无关的代码

git clone ** -b <branch_name> --depth=1 //指定分支和depth clone代码

  1. patch代码
    git format-patch -N -2 //基于本地最新的两个提交,生成patch
    git am patch手动解决冲突
    (1) patch代码可能提示:“patch does not apply”,说明patch不能合入,在解决问题后,“git am --continue”继续,也可以“git am --skip”忽略,或者“git am --abort”停止合入
    (2) .git apply --reject **.patch
    git status会看到.rej结尾的文件,此文件即表示希望合入的代码,需要解决冲突
    (3) vim -O打开rejct文件和原文件,修改后,git add修改该文件
    (4) git am --resolved解决冲突后合入

  2. 分支管理

从mater分支拉出来一个名为A的分支:

> git checkout master
> git pull origin master
> git checkout -b A

将A分支的代码合并到master分支:

> git checkout master
> git pull origin master
> git merge A
> git status // 查看是否存在冲突
> git add <conflicted_file>
> git commit -m "Resolve conflicts"
> git push origin master

3. Linux

3.1 命令

  1. Linux下*.tar.gz文件压缩/解压缩命令
    压缩命令:
      命令格式:tar -zcvf 压缩文件名.tar.gz 被压缩文件名
    可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。
    解压缩命令:
      命令格式:tar -zxvf 压缩文件名.tar.gz
    解压缩后的文件只能放在当前的目录。
    tar -xvf 压缩文件名.tar.xz
    -c :create 建立压缩档案的参数;
    -z : 是否需要用gzip压缩;
    -x : 解压缩压缩档案的参数;
    -v: 压缩的过程中显示档案;
    -f: 置顶文档名,在f后面立即接文件名,不能再加参数

  2. scp 远程传输命令
    scp ./test (username)@211.0.0.4:/tmp/ 传输本地test文件到远程服务器/tmp目录下
    scp (username)@211.0.0.4:/tmp/test ./ 下载远程服务器文件到本地目录(或指定目的地)

  3. 环境相关
    中文显示问题:可以使用locale命令,查看当前系统默认采用的字符集
    locale
    export LANG=“zh_CN.UTF-8”
    Linux基础:中文显示乱码
    Linux工具大全

  4. 一些命令
    删除前2天的文件:find ./ -mtime +2 -print|xargs rm -vf
    [当文件过多或者需要指定清理某时间点文件采用上述命令]

  5. 批量替换文件中字符串~sed命令

sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
// 比如,在当前目录下,替换abort->commit
sed -i "s/abort/commit/g" `grep abort -rl ./`

// 查找给定的字符串,并删除这些字符串所在的行
sed -ie '/指定字符串/d' 文件名.log
  1. diff-查看两个文件夹所有不同
diff -Nrq a b
-r 递归
-q 只输出不同的文件
  1. Linux文件系统,磁盘占用量和实际不一致
sudo lsof -n | grep deleted

上述命令可以打印出所有针对已删除文件的读写操作,这类操作是无效的,找到对应的进程ID, kill掉即可

  1. 删除命令
    当待删除的文件过多,可能出现Argument list too long的报错,可以通过如下命令进行删除:
// 删除当前目录,文件名前缀匹配store的所有文件
sudo find ./ -name "store*" -print0 | sudo xargs -0 rm

// 通过ls命令
ls | xargs rm -r
  1. 为什么 Linux buffer/cache 内存占用很高?参考如下文章
    为什么 Linux buffer/cache 内存占用很高?

  2. 查看进程工作目录
    /proc/123/cwd 其中123是进程PID

3.2 调试相关

1. core dump

/proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
sudo echo “/corefile/core-%e-%p-%t” > /proc/sys/kernel/core_pattern,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳

2. ulimit

ulimit -a 可以查看系统相关配置,特别ulimit -s 10240可以设置堆栈大小为10M,如果不设置经常会有问题,比如进程启动不了,或者发生莫名其妙的core。(/etc/security/limits.conf)

3. gdb

gdb相关: set print pretty
查看汇编:disass
查看寄存器:info reg

3.3 系统相关

mkdir -p /data/1
mkfs.ext4 /dev/sdb 将sdb盘格式化为ext4格式
sudo mount /dev/sdb /data/1 将sdb盘挂载在/data/1
sysctl -a|grep core 查看core位置
查看流量
sar -n DEV 1 -m
查看网卡:千兆或者万兆
sudo ethtool eth0
w查看负载
lscpu 查看CPU核数
查看进程的父进程 cat /proc/pid/status | grep PPID

运维

top -d 1 按1
查看网络流量 sar
查看load w
sar -n DEV 1 -m
tsar命令
查看sdd盘的IO情况
tsar --io -I sdd -i 1 | less
查看网卡千兆和万兆
lspci |grep -i eth
sudo ethtool eth2 Speed: 10000Mb/s 表示万兆网卡
sudo ethtool eth3
cat /etc/sysconfig/network-scripts/ifcfg-eth0|grep bond0
MASTER=bond0
查看IO:
iostat 1 -xm
查看性能:
sudo perf top -p [pid]

rpm包安装:sudo rpm -ivh XX.ipm
nm: 查看二进制是否有符合表, nm 可执行文件(没有符号表,gdb无法查看详细信息)
dmesg时间转换工具

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值