大家都知道,用 git 进行版本管理,就一定会使用到 git log
,来查看文件的改动或者项目历史。
git log
是有很多选项来帮助我们查看项目改动、结构、历史等等。在这片文章中,我们将会看到最有用的一些。
git log --oneline
这条命令把每一条提交压缩到只有一行,仅保留短哈希、提价说明等最必要的信息,让我们可以以一种更干净的方式查看提交。
按时间过滤
下面几条命令会根据给出的时间筛选提交,例如:用 --after
来筛选给定时间之后的,用 --before
来筛选给定时间之前的。
搜索 2020-05-15 之后的:
git log --after="2020-15-05"
搜索 2020-05-15 到 2020-05-25 之间的:
git log --after="2020-15-05" --before="2020-25-05"
还可以使用以下的格式:
git log --after="yesterday" // 昨天以来的
git log --after="today" // 仅今天的
git log --before="10 day ago" // 十天之前的
git log --after="1 week ago" // 一周前以来的
带有差异内容(diff
)的
git log -p
这条命令会展示带有改动内容的历史,可以看到每条提交都改动了哪些内容。
按作者过滤
可以使用 --author
选项来过滤作者。
git log --author="Srebalaji"
git 会使用正则来进行筛选和过滤,因此,即使不是准确的名字或大小写不一致也是可以的。
git 可以接受多个选项,你可以按照你的需求来组合使用,例如:
git log --after="1 week ago" --author="srebalji" -p
按提交信息过滤
git 可以接受用正则表达式来筛选所有复合条件的提交。
git log --grep="ISSUE-43560"
上面这条命令默认是区分大小写的,如果想不区分大小写地筛选,可以使用 -i
选项。
git log -i --grep="issue-43560"
下面这条命令可以同时筛选两个 issue。
git log -i --grep="issue-43560\|issue-89786"
文件的历史
有的时候我们可能只想看某一个文件的历史,这就要用到下面这种用法。
git log index.ts
也可以传入多个文件。
git log index.ts app.tsx
同样,也是可以传入多个选项的:
git log -i --grep="fix" index.ts app.tsx
按文件内容搜索
你可能想搜索特定的某一串字符是什么时候添加进来的,这个时候就可以使用下面这条命令。
git log -S"function login()"
上面这条命令会搜索 function login()
,默认区分大小写。同样的,也可以用 -i
选项来忽略大小写。
仅展示合并
git log --merges
展示两个分支间的差异
git log master..develop
这条命令会展示所有在 develop 分支却不在 master 分支中的提交。这样,我们就可以知道 develop 中有哪些提交是不在 master 中的。
自定义的 log 信息
git 提供了很多可以自定义 log 信息的选项。例如:
git log --pretty=format:"%Cred%an - %ar%n %Cblue %h -%Cgreen %s %n"