工具使用 匯總集合

本文详细列举了GDB调试工具的多个实用技巧,包括查看版本、设置选项、跟踪函数等,以及Git的多种日志查询方式,如显示特定时间段、作者的提交记录,还有关于rebase、sparse-checkout的使用。这些技巧对于日常开发和版本控制极具价值。
摘要由CSDN通过智能技术生成

Tools - GDB

GDB 100個小技巧

gcc -g [need option] <cfile>
(gdb) show version
(gdb) show copying # show warranty

查看函數

info functions [functionName] # 查看函數

GDB, initial file

# set confirm off # 關閉推出確認
# set pagination off # 關閉分頁輸出
# set step-mode on # 不跳過沒有調試信息的函數
# set histroy filename ~/.gdb_history # 將歷史命令保存到對應的文件中
# set history save on # 保存 gdb 的歷史命令

Tools - Git

Git 教程的相關幫助

Log

1.显示整个提交历史记录,但跳过合并

$ git log --no-merges
commit c5f8a258babf5eec54edc794ff980d8340396592
Author: maxsu <your_email@mail.com>
Date:   Wed Jul 12 22:07:59 2017 +0800

    commit a new file: newfile.txt
... ...

2.显示自v2.6.12版以来所有提交更改include/scsidrivers/scsi子目录中的任何文件的所有提交

$ git log master include/scsi drivers/scsi

3.显示最近两周的更改文件gitk。 “--”是必要的,以避免与名为gitk的分支混淆

$ git log --since="2 weeks ago" -- gitk

4.显示“test”分支中尚未在“release”分支中的提交,以及每个提交修改的路径列表

$ git log --name-status release..test

5.显示更改builtin/rev-list.c的提交,包括在文件被赋予其现有名称之前发生的提交。

$ git log --follow builtin/rev-list.c

6.显示在任何本地分支中的所有提交,但不包括任何远程跟踪分支机构的起始点(origin不具有)。

$ git log --branches --not --remotes=origin

7.显示本地主服务器中的所有提交,但不显示任何远程存储库主分支。

$ git log master --not --remotes=*/master

8.显示历史,包括变化差异,但仅从“主分支”的角度来看,忽略来自合并分支的提交,并显示合并引入的变化的完全差异。只有当遵守在一个整合分支上合并所有主题分支的严格策略时,这才有意义。

$ git log -p -m --first-parent

9.显示文件main.c中的函数main()随着时间的推移而演变。

$ git log -L '/int main/',/^}/:main.c

10.将显示最近三次的提交。

$ git log -3

11.根据提交ID查询日志

$ git log commit_id    #查询ID(如:6bab70a08afdbf3f7faffaff9f5252a2e4e2d552)之前的记录,包含commit
$ git log commit1_id commit2_id #查询commit1与commit2之间的记录,包括commit1和commit2
$ git log commit1_id..commit2_id #同上,但是不包括commit1

其中,commit_id可以是提交哈希值的简写模式,也可以使用HEAD代替。HEAD代表最后一次提交,HEAD^为最后一个提交的父提交,等同于HEAD~1HEAD~2代表倒数第二次提交--pretty按指定格式显示日志信息,可选项有:oneline,short,medium,full,fuller,email,raw以及format:,默认为medium,可以通过修改配置文件来指定默认的方式。

$ git log (--pretty=)oneline

常见的format选项:

#选项     #说明
%H      提交对象(commit)的完整哈希字串
%h      提交对象的简短哈希字串
%T      树对象(tree)的完整哈希字串
%t      树对象的简短哈希字串
%P      父对象(parent)的完整哈希字串
%p      父对象的简短哈希字串
%an     作者(author)的名字
%ae     作者的电子邮件地址
%ad     作者修订日期(可以用 -date= 选项定制格式)
%ar     作者修订日期,按多久以前的方式显示
%cn     提交者(committer)的名字
%ce     提交者的电子邮件地址
%cd     提交日期
%cr     提交日期,按多久以前的方式显示
%s      提交说明

注:作者是指最后一次修改文件的人;而提交者是指提交该文件的人。

$ git log --pretty=format:"%an %ae %ad %cn %ce %cd %cr %s" --graph

--mergs - 查看所有合并过的提交历史记录
--no-merges - 查看所有未被合并过的提交信息
--author=someonet - 查询指定作者的提交记录

$ git log --author=maxsu

--since--affter - 仅显示指定时间之后的提交(不包含当前日期)
--until--before - 仅显示指定时间之前的提交(包含当前日期)

$ git log --before={3,weeks,ago} --after={2018-04-18}

Rebase

rebase,變基,可以直接理解為改變基底。feature的分支是基于master分支的B拉出來的分支,feature的基底是B。而master在B之後有新的提交,就相當于此時要用master新的提交來作爲feature分支的新基底。實際操作為把B之後feature的提交存下來,然後刪掉原來這些提交,再找到master的最新提交位置,把存下來的提交再接上去,如此feature分支的基底就相當于變成了M而不是原來的B了。

通過以下命令,可以變基

git rebase master feature

#\ git checkout feature
#\ git rebase master

Sparse-Checkout

開啓相關的 Sparse-Checkout

git sparse-checkout init

寫入需要過濾的文件

git sparse-checkout set <file-name>

關閉相關的 Sparse-Checkout

git sparse-checkout disable

通配規則

  • sparse-checkout 文件中, 支持通配符"*"
  • 可以使用 “!”, 排除相應的文件和目錄
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值