git深入理解(四):git log詳解
阿新 • • 發佈:2020-12-09
技術標籤:雜項
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 8 10:49:12 2020 +0800
aaaaaaa
commit 2e1b4bced0f0ce2c20362789be2878b36c6910f7
Author: phprao <ruFMskQ0>
Date: Mon Dec 7 16:14:20 2020 +0800
add t4
commit 8262ea4e39ea80dc56056a667e9dbdcd235efc08
Author: phprao < ruFMskQ0>
Date: Mon Dec 7 15:22:32 2020 +0800
add t3
commit f2b85bf7f7516a6a6a0768e44266d09414b03a2e
Author: phprao <ruFMskQ0>
Date: Mon Dec 7 15:10:04 2020 +0800
2
commit 01d308a7ef190b881969ea9b9112424819ab346a
Author: phprao <ruFMskQ0>
Date: Mon Dec 7 14: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 --pretty=oneline --after='12-8-2020 00:00:00' -p
818c5faf28d0a0e5c8133dbd77dd24e6e70db9bf (HEAD -> master) aaaaaaa
diff --git a/q/w/t4.txt b/q/w/t4.txt
index 9513262..052e4e1 100644
--- a/q/w/t4.txt
+++ b/q/w/t4.txt
@@ -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 8 10:49:12 2020 +0800
aaaaaaa
diff --git a/q/w/t4.txt b/q/w/t4.txt
index 9513262..052e4e1 100644
--- a/q/w/t4.txt
+++ b/q/w/t4.txt
@@ -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 8 10:12:28 2020 +0800
xx
diff --git a/q/w/t4.txt b/q/w/t4.txt
index 052e4e1..dab0730 100644
--- a/q/w/t4.txt
+++ b/q/w/t4.txt
@@ -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