git log的搜索与筛选

161 阅读2分钟

1. 按作者搜索

git log --author=<pattern>

例如,我现在的git中有两个提交,作者分别是bob和allen:

image.png

现在想搜索出bob的提交:git log --author=bob

image.png

这样就只会打印出bob的提交。

2.查看文件的改动

有时我们想查看某个文件在哪几次commit中进行了修改,那么可以这样进行查找: git log 文件名

例如,在我当前的目录下有这么些文件:

image.png

现在我想查看一下git_search.js文件的提交历史,那么可以这样操作: git log git_searcj.js

image.png

可以看到在这两次提交中对git_search.js进行的改动。

3. 查看每次提交的具体修改

如果想查看关于该文件每次提交的详细情况,可以使用git log -p

image.png

这样就打印出所有提交的diff信息。

同样的,如果在该命令后面加上文件名,则可以看到这个文件相关提交的具体改动:

image.png

4. 筛选需要的修改

有时候我们想看一下某些代码是什么时候添加或者删除的,那么可以使用git log -S 内容

比如,我想看看我的代码里console.log('git search')这段代码是什么时候引入的,可以用 git log -S "console.log('git search')"命令:

image.png

就可以看到是allen添加这段话的。

5. 对提交说明(commit message)进行筛选

当需要对提交说明中的关键字进行筛选时,可以使用git log --grep 关键字进行筛选,例如,我想对提交说明中rebase相关的提交进行筛选:git log --grep rebase:

image.png

可以看到与'rebase'字符串相关的提交都会被筛选出来。

6. -p命令的灵活运用

对于上述命令,我们可以结合-p灵活的打印出每个commit具体的修改,例如git log -p --grep rebase:

image.png

这样就可以看到每次提交的diff情况。

7. 总结

本文介绍了一些git log的深入使用方法,可以更方便的在终端场景下进行查找、筛选的操作。