# git log
git log的本质是展示提交信息。
但是该命令配合一些参数,可以如同 git rev-list
一样控制输出哪些提交和提交的显示方式,也可以如同 git diff-*
一样决定怎样显示每个提交的修改内容。
是不是非常惊讶了?另外 git rev-list
这个命令是什么鬼?我至今未用过,先当作黑盒不管它了。由此可见,关于 git log
这个命令我们真的应该重新认识一下它
git log --oneline --stat --no-merges -p -n 2 --graph
# Commit Limiting(过滤提交的)
提交太多了,不好找,就需要用一些特别的参数帮忙限制一下输出。例如只想找昨天的,只想找小明的,只想修改过A.txt 文件的等等各种只想,只要你敢想,基本都能实现。
# Search-作者
//命令格式
git log --author=<pattern>
git log --committer=<pattern>
//示例
git log --author=“小明”
git log --author=“小明\|小红”
1
2
3
4
5
6
7
2
3
4
5
6
7
# Search-作者
//某个日期之后
git log --since=<date>
git log --after=<date>
//某个日期之前
git log --until=<date>
git log --before=<date>
如果你想要一个具体的时间区间的,可以把这个参数组合起来的,例如下面的命令:
//查出 03.12-03.18 期间的提交
git log --since="2018.03.12" --until="2018.03.18"
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# Search-提交信息
git log --grep=<pattern>
//示例
git log --grep='喜欢' --oneline
1
2
3
4
5
2
3
4
5
# Search-修改内容
一般情况下,我们想找一个提交,大多是为了某个修改去找,这个修改对应要么是具体的文件,要么是具体的修改的内容。放心,这个条件也支持。
//文件
git log [\--] <path>…
//示例
git log --oneline -- 11.txt
1
2
3
4
5
6
7
2
3
4
5
6
7
# 修改内容
//查看某个字符串的变动历史提交
git log -S<string>
//查看某符合某一个正则表达式内容的变动历史提交
git log -G<regex>
//例子
git log -S"喜欢你" --oneine
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# Search-合并相关的提交 & 文件
工作中,分支之间的合并,往往不是 fast-forword,而是 recursive strategy merge 策略式合并,所以会在历史中出现很多合并提交。运用下面的命令,你可以选择只看合并提交,或者非合并提交。
//查看合并提交
git log --merges
//查看非合并提交
git log --no-merges
//查看发生合并冲突的文件
git log --merge
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
查看哪个人修改了哪个文件
git log --stat -- src/app/payingMembers-ceshi/js
1
在指定的文件中查找哪个字段的改动信息
git log -S"另存为" -p -- ./src/views/event/index.vue
1