300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Git笔记(6) 查看提交历史

Git笔记(6) 查看提交历史

时间:2024-07-13 18:12:58

相关推荐

Git笔记(6) 查看提交历史

Git笔记(6) 查看提交历史

1. 提交历史2. 查看3. 常用选项3.1. 差异3.2. 总结3.3. 自定义格式3.3.1. 整合一行3.3.2. 详尽程度3.3.3. 定制格式3.4. 形象展示3.5. 限制输出长度3.5.1. 时间3.5.2. 过滤3.5.3. 路径3.5.4. 实例

1. 提交历史

在提交了若干更新,又或者克隆了某个项目之后

也许想回顾下提交历史

完成这个任务最简单而又有效的工具是git log命令。

使用 “simplegit” 项目作为示例

首先克隆该项目:

$ git clone /schacon/simplegit-progit

2. 查看

在此项目中运行git log命令时,可以看到下面的输出:

默认情况下,git log按时间先后顺序列出所有的提交,最近的更新排在最上面

列出了每个提交的 SHA-1 校验和、作者名字和电子邮件地址、提交时间以及提交说明

3. 常用选项

3.1. 差异

其中一个比较有用的选项是-p,它会显示每次提交所引入的差异

与此同时,也可以使用-2选项来仅显示最近的两次提交

$ git log -p -2

该选项除了显示基本信息之外,还附带了每次commit的变化

适用于当进行代码审查

或者快速浏览某个搭档提交所带来的变化的时候

3.2. 总结

可以使用--stat选项,查看每次提交的简略统计信息:

$ git log --stat

在每次提交的下面列出所有被修改过的文件、有多少文件被修改了

3.3. 自定义格式

可以使用--pretty选项,自定义格式的方式展示提交历史

这个选项有一些内建的子选项

3.3.1. 整合一行

比如oneline会将每个提交放在一行显示,在浏览大量的提交时非常有用

3.3.2. 详尽程度

另外还有shortfullfuller选项,它们展示信息的格式详尽程度不一:

3.3.3. 定制格式

还有format,可以定制要显示的记录格式

这样的输出对后期提取分析格外有用

$ git log --pretty=format:"%h - %an, %ar : %s"

下表列出了常用的格式占位符写法及其代表的意义:

作者:实际作出修改的人

提交者:最后将此工作成果提交到仓库的人

所以,当你为某个项目发布补丁,然后某个核心成员将你的补丁并入项目时

你就是作者,而那个核心成员就是提交者

3.4. 形象展示

--graph选项添加了一些 ASCII 字符串来形象地展示分支、合并历史

onelineformat与另一个log选项--graph结合使用时尤其有用:

$ git log --pretty=format:"%h %s" --graph

* 2d3acf9 ignore errors from SIGCHLD on trap* 5e3ee11 Merge branch 'master' of git:///dustin/grit|\| * 420eac9 Added a method for getting the current branch.* | 30e367c timeout code and tests* | 5a09431 add timeout protection to grit* | e1193f8 support for heads with slashes in them|/* d6016bc require time for xmlschema* 11d191e Merge branch 'defunkt' into local

3.5. 限制输出长度

Git 默认会将所有的输出传送到分页程序

所以一次只会看到一页的内容

除了定制输出格式的选项之外,

git log还有许多非常实用的限制输出长度的选项,也就是只输出一部分的提交

3.5.1. 时间

类似--since--until这种按照时间作限制的选项很有用

例如,下面的命令会列出最近两周的所有提交:

$ git log --since=2.weeks

该命令可用的格式十分丰富——可以是类似 “-11-10” 的具体的某一天

也可以是类似 “2 years 1 day 3 minutes ago” 的相对日期

3.5.2. 过滤

还可以过滤出匹配指定条件的提交

--author选项显示指定作者的提交

--grep选项搜索提交说明中的关键字

请注意,如果要同时对作者和提交说明进行过滤就必须添加–all-match选项

否则该命令将会匹配满足其中任意一个条件的提交

另一个非常有用的过滤器是-S

它接受一个字符串参数,并且只会显示那些添加或删除了该字符串的提交

假设想找出添加或删除了对某一个特定函数的引用的提交,可以调用:

$ git log -Sfunction_name

3.5.3. 路径

如果只关心某些文件或者目录的历史提交

可以在 git log 选项的最后指定它们的路径(path)

因为是放在最后位置上的选项

所以用两个短划线(–)隔开之前的选项和后面限定的路径名

3.5.4. 实例

如果要查看 年 10 月期间 Git 源代码仓库中

由 Junio Hamano 提交的修改了测试文件并且尚未合并的提交,可以使用下面的命令:

$ git log --pretty="%h - %s" --author=gitster --since="-10-01" \--before="-11-01" --no-merges -- t/5610e3b - Fix testcase failure when extended attributes are in useacd3b9e - Enhance hold_lock_file_for_{update,append}() APIf563754 - demonstrate breakage of detached checkout with symbolic link HEADd1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths51a94af - Fix "checkout --track -b newbranch" on detached HEADb0ad11e - pull: allow "git pull origin $something:$current_branch" into an unborn branch

在近 40000 条提交中,上面的输出仅列出了符合条件的 6 条记录

参考: git

以上内容,均根据git官网介绍删减、添加和修改组成

相关推荐:

Git笔记(5) 状态记录

Git笔记(4) 获取仓库

Git笔记(3) 安装配置

Git笔记(2) 入门认知

Git笔记(1) 版本控制

谢谢

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。