git深⼊理解(四):gitlog详解Show commit logs ⽤来查看commit⽇志
git log -h
usage: git log [<options>][<revision-range>][[--]<path>...]
or: git show [<options>]<object>...
-q, --quiet          suppress diff output
--source              show source
--use-mailmap        Use mail map file
--decorate-refs <pattern>
only decorate refs that match <pattern>
--decorate-refs-exclude <pattern>
do not decorate refs that match <pattern>
-
-decorate[=...]      decorate options
-L <n,m:file>        Process line range n,m in file, counting from 1
普通输出
$ git log
commit 818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master)
Author: phprao <ruFMskQ0>
Date:  Tue Dec 810:49:12 2020 +0800
aaaaaaa
commit 2e1b4bced0f0ce2c20362789be2878b36c6910f7
Author: phprao <ruFMskQ0>
Date:  Mon Dec 716:14:20 2020 +0800
add t4
commit 8262ea4e39ea80dc56056a667e9dbdcd235efc08
Author: phprao <ruFMskQ0>
Date:  Mon Dec 715:22:32 2020 +0800
add t3
commit f2b85bf7f7516a6a6a0768e44266d09414b03a2e
Author: phprao <ruFMskQ0>
Date:  Mon Dec 715:10:04 2020 +0800
2
commit 01d308a7ef190b881969ea9b9112424819ab346a
Author: phprao <ruFMskQ0>
Date:  Mon Dec 714:24:03 2020 +0800
first commit
简化输出
$ git log --oneline
818c5fa (HEAD -> master) aaaaaaa
2e1b4bc add t4
8262ea4 add t3
f2b85bf 2
01d308a first commit
或者
$ git log --pretty=oneline
818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master) aaaaaaa
2e1b4bced0f0ce2c20362789be2878b36c6910f7 add t4
8262ea4e39ea80dc56056a667e9dbdcd235efc08 add t3
f2b85bf7f7516a6a6a0768e44266d09414b03a2e 2
01d308a7ef190b881969ea9b9112424819ab346a first commit
HEAD -> master表⽰当前HEAD处在这个分⽀下的这个commit。
指定输出⾏数
$ git log --pretty=oneline -3
818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master) aaaaaaa
2e1b4bced0f0ce2c20362789be2878b36c6910f7 add t4
8262ea4e39ea80dc56056a667e9dbdcd235efc08 add t3
限定指定⽇期范围的log
$ git log --pretty=oneline --after='12-8-2020 00:00:00'
818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master) aaaaaaa
–since --before --until --after
不填时分秒则为当前时刻。
输出具体变动内容
-p:控制输出每个commit具体修改的内容,输出的形式以diff的形式给出。
$ git log -p --pretty=oneline --after='12-8-2020 00:00:00'
818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master) aaaaaaa
diff --git a/q/ b/q/
index 9513262..052e4e1 100644
-
-- a/q/
+++ b/q/
@@ -1 +1 @@
-t4
\ No newline at end of file
+t4xx
\ No newline at end of file
同样是⽤来看改动的相对信息的,--stat⽐-p的输出更简单⼀些
查看某次提交的改动
git show命令同git log -p输出类似,只不过它只显⽰⼀个commit的内容,如果不指定commit hash, 它默认输出HEAD指向commit的内容.
$ git show
commit 818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master)
Author: phprao <ruFMskQ0>
Date:  Tue Dec 810:49:12 2020 +0800
aaaaaaa
diff --git a/q/ b/q/
index 9513262..052e4e1 100644
--- a/q/
+++ b/q/
@@ -1 +1 @@
-t4
\ No newline at end of file
+t4xx
\ No newline at end of file
指定某个提交
$ git show 6f43203cf463dc5320916f96abef0f1ad63428fd
commit 6f43203cf463dc5320916f96abef0f1ad63428fd (b1)
Author: phprao <ruFMskQ0>
Date:  Tue Dec 810:12:28 2020 +0800
xx
diff --git a/q/ b/q/
index 052e4e1..dab0730 100644
--- a/q/
+++ b/q/
@@ -1 +1,2 @@
-t4xx
\ No newline at end of file
+t4xx
+cccccccc
\ No newline at end of file
git shortlog
这个命令⽤来输出汇总信息,以作者进⾏分类。
$ git shortlog
phprao (5):
first commit
2
add t3
add t4
aaaaaaa
git shortlog -s:可以⽤来统计每个作者的commit数量
git shortlog -n:可以⽤来对统计的量进⾏倒序排列
输出给定的⽤户提交
加--author⽤来过滤commit,限定输出给定的⽤户
$ git log --pretty=oneline --author='phprao'
818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master) aaaaaaa 2e1b4bced0f0ce2c20362789be2878b36c6910f7 add t4
8262ea4e39ea80dc56056a667e9dbdcd235efc08 add t3
f2b85bf7f7516a6a6a0768e44266d09414b03a2e 2
01d308a7ef190b881969ea9b9112424819ab346a first commit
控制是否显⽰merge的commit
–merges或者–no-merges
–decoreate
该参数⽤来控制log输出时,显⽰对应commit所属的branch和tag信息图形化地表⽰出分⽀合并历史
–graph
$ git log  --pretty=oneline --graph
*  faa4214bc342ade5693a7efc8a64e869965c039e (HEAD -> master) fix conflict
|\
| * 6f43203cf463dc5320916f96abef0f1ad63428fd (b1) xx
| * adda355046920ae91118cf42ec2f45190b0ec89c test
* | 818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf aaaaaaa
|/
* 2e1b4bced0f0ce2c20362789be2878b36c6910f7 add t4
* 8262ea4e39ea80dc56056a667e9dbdcd235efc08 add t3
* f2b85bf7f7516a6a6a0768e44266d09414b03a2e 2
* 01d308a7ef190b881969ea9b9112424819ab346a first commit
输出指定分⽀的提交记录
git log branchname
$ git log b1 --pretty=oneline
6f43203cf463dc5320916f96abef0f1ad63428fd (b1) xx
adda355046920ae91118cf42ec2f45190b0ec89c test
2e1b4bced0f0ce2c20362789be2878b36c6910f7 add t4
8262ea4e39ea80dc56056a667e9dbdcd235efc08 add t3
f2b85bf7f7516a6a6a0768e44266d09414b03a2e 2
01d308a7ef190b881969ea9b9112424819ab346a first commit
git log --oneline branch1 ^branch2可以查看在分⽀1,却不在分⽀2中的提交.^表⽰排除这个分⽀
$ git log master ^b1 --pretty=oneline
faa4214bc342ade5693a7efc8a64e869965c039e (HEAD -> master) fix conflict
818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf aaaaaaa
根据comment信息过滤
–grep
$ git log --pretty=oneline --grep=test
adda355046920ae91118cf42ec2f45190b0ec89c test
默认情况下, git log --grep --author是OR的关系,即满⾜⼀条即被返回,如果你想让它们是AND的关系,可以加上–all-match的option
查看某个⽂件的提交记录
git log -- a/
查看某个⽂件的改动内容
⽐如你刚拉取了代码,发现其他⼈有提交改动,你想看看某个⽂件在最近⼀次提交改动了啥。
git log -p a/
会以倒序的⽅式以commit为单位列出此⽂件的改动内容,也就是最近的改动在前⾯;但是如果我只想看最近的⼀次呢。可以设置显⽰数量-1
git log -p -1 a/
git使用详解我们知道git show也能显⽰改动内容,所以也可以这么写,但是这样貌似⿇烦了⼀点。
git show afb2b79f3165b7ac570878a874b4dd236107c783 a/
关于gitk-图形化查看提交记录
的确在查看提交记录的时候,纯⽂本的表⽰⽅式在阅读的时候效率有点低,尤其是当提交记录越来越多的时候,这是和SVN的直观式的图形界⾯相⽐,⽐如有⼀个场景,我想查看某次提交修改了哪些⽂件(⽽不关⼼修改的内容),我可以使⽤ git show 或者 git log -1 -p 但是他们都会 diff并输出具体的变动内容,然后我需要⼀直翻到最后才⾏看完,效率很低,⽽我只需要它给我列出修改了哪些⽂件即可。此时可以使⽤ gitk命令来更好的查看。
可以理解为 gitk <==> git log 后⾯的参数和 git log ⼀样,凡是 git log 可以⽤的选项也都能⽤在 gitk 上。
⽐如
gitk
gitk -3
gitk --author='phprao'
...
gitk 会弹出⼀个窗⼝图形化的展⽰提交记录
如果出现gitk中⽂乱码问题,打开git的配置⽂件(根据⾃⼰安装的git⽬录,此处为安装在D盘):D:\Program Files\Git\etc\gitconfig 在⽂件内追加以下内容:
[gui]
encoding = utf-8

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。