查询操作
查询分支
$ git branch
查询目前所有的分支列表
假如在参数最后添加 -v, 除了分支列表还会显示最后一次提交的作者
查询标签
$ git tag
查询目前所有的标签
根据规则进行标签匹配
$ git tag -l 'v*'
这样就是查询所有v开头的标签名
查询Git配置
git config --list
config可以查看Git的配置,添加–list命令,会将配置以列表形式列出来
$ git config {属性名称}
可以将单独的属性名称列出来,然后进行单一的查询
查询操作日志
$ git log
它还有其他的命令格式
- –oneline 查看历史记录的简洁的版本
$ git log --oneline
后续添加–graph 选项,查看历史中什么时候出现了分支、合并
$ git log --oneline --graph
查询指定用户的操作日志
$ git log --author=用户名
例子
$ git log --author=daify
commit 9d4cc324431a6851f23069899f802629b16b256f
Author: daify <-------@qq.com>
Date: Sat Apr 27 20:17:38 2019 +0800
Initial commit
设置查询日期
可以通过–since 和 --before,也可以用 --until 和 --after。查询指定时间的记录
$ git log --oneline --before={3.weeks.ago} --after={2010-04-18} --no-merges
log命令支持的选项
选项 | 说明 |
---|---|
-p | 按补丁格式显示每个更新之间的差异。 |
–word-diff | 按 word diff 格式显示差异。 |
–stat | 显示每次更新的文件修改统计信息。 |
–shortstat | 只显示 --stat 中最后的行数修改添加移除统计。 |
–name-only | 仅在提交信息后显示已修改的文件清单。 |
–name-status | 显示新增、修改、删除的文件清单。 |
–abbrev-commit | 仅显示 SHA-1 的前几个字符,而非所有的 40 个字符。 |
–relative-date | 使用较短的相对时间显示(比如,“2 weeks ago”)。 |
–graph | 显示 ASCII 图形表示的分支合并历史。 |
–pretty | 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。 |
–oneline | –pretty=oneline --abbrev-commit 的简化用法。 |
调试
文件标注
blame 命令可以来追踪某文件的历史修改记录,可以追踪代码中某一段的修改记录
$ git blame -L 40,80 Test.java
解释:查询Test文件40行至80行的历史修改记录
二分法查找
假如你的项目出现的问题,但是你不知道是什么时候产生的这个BUG,但是你只知道上一个正常版本的版本号,那么你就可以使用二分法进行排查。
而二分法排查主要需要bisect命令
- 首先你需要启动排查
$ git bisect start
- 然后你要告诉Git你当前提交是有问题的
$ git bisect bad
- 然后告诉最后一次正常状态是那次提交
$ git bisect good v2019-04-28
然后Git会检出之间的那个提交,这个时候你可以进行测试
如果这个提不存在问题则证明问题是之后存在的,则标记,继续查找
$ git bisect good
如果这个提存在问题则证明问题是之前存在的,则标记,继续查找
$ git bisect bad
最后 Git 拥有的信息已经可以确定引入问题的位置在哪里。 它会告诉你第一个错误提交的 SHA-1 值并显示一些提交说明。
当执行完所有操作后,你应该执行下面的命令来重置你的HEAD指针到开始位置,否则HEAD会出现在一个奇怪的位置
git bisect reset
高级查询
Git提供了一个grep命令,可以让你方便的从提交历史或者工作目录中查找一个字符
$ git grep -n {需要被匹配的内容}
默认Git会查询你的工作目录,可以使用-n 来输出匹配行行号
- 使用**–count**命令来使 Git 输出概述的信息,仅仅包括哪些文件包含匹配以及每个文件包含了多少个匹配
- 使用**-p**来查看匹配的行时属于哪个方法或者函数