十条有用的 git log 命令

1,855 阅读3分钟

大家都知道,用 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"

原文