今天是Git系列課程第六課,上一課我們學(xué)會(huì)了Git本地提交,今天痞子衡要講的是如何查看Git本地歷史提交。
當(dāng)我們?cè)趥}(cāng)庫(kù)里做了很多次提交之后,免不了需要回看提交記錄,看看自己之前的改動(dòng)。有三種Git命令可以幫我們查看記錄,痞子衡為大家一一講解:
1.查看本地歷史提交git log
git log是最直接的查看歷史提交的命令,git log可直接用也可帶參數(shù)用,常用的有下面4種:
1.1標(biāo)準(zhǔn)查看git log
// 顯示所有歷史提交標(biāo)準(zhǔn)信息,每個(gè)提交信息包括SHA號(hào),作者,時(shí)間以及標(biāo)題 jay@pc MINGW64 /d/my_project/gittest (master)$ git log
commit ea3925e786f7975265fd43eface72f48af4306dd (HEAD -> master)
Author: Jay Heng <hengjie1989@foxmail.com>
Date: Sun Mar 11 07:46:16 2018 +0800
Add initial platform and update test
// 此處略去其他commit信息
...
1.2精簡(jiǎn)查看git log --pretty=oneline
// 顯示所有歷史提交精簡(jiǎn)信息,每個(gè)提交信息僅占一行,信息包括SHA號(hào)以及標(biāo)題。
jay@pc MINGW64 /d/my_project/gittest (master)$ git log --pretty=oneline
ea3925e786f7975265fd43eface72f48af4306dd (HEAD -> master) Add initial platform and update test
fdec58a389772a14f71c391214e90f5c5c00570a Initial application and test
867df08b4e13649e30926b483279dddce32750c2 (origin/master, origin/HEAD) second commit
5fe04f86701d1d0ccb710140d440fa86daab5ffb first commit
1.3完整查看git log -p
// 顯示所有歷史提交完整信息,比標(biāo)準(zhǔn)查看多了提交的具體文件改動(dòng)信息。
jay@pc MINGW64 MINGW64 /d/my_project/gittest (master)$ git log -p
commit ea3925e786f7975265fd43eface72f48af4306dd (HEAD -> master)
Author: Jay Heng <hengjie1989@foxmail.com>
Date: Sun Mar 11 07:46:16 2018 +0800
Add initial platform and update test
diff --git a/app/platform.c b/app/platform.c
new file mode 100644
index 0000000..e69de29
diff --git a/app/test.c b/app/test.c
index e69de29..70dde01 100644
--- a/app/test.c
+++ b/app/test.c
@@ -0,0 +1,6 @@
+#include <stdio.h>
+#include <stdlib.h>
+void test(void)
+{
+ printf("this is test\n");
+}
\ No newline at end of file
// 此處略去其他commit信息
...
1.4定制查看git log --pretty=format:"%opt1 %opt2" --graph
// 按指定格式顯示所有提交歷史信息。
jay@pc MINGW64 /d/my_project/gittest (master)$ git log --pretty=format:"%h %an %s" --graph
* ea3925e Jay Heng Add initial platform and update test
* fdec58a Jay Heng Initial application and test
* 867df08 Jay Heng second commit
* 5fe04f8 Jay first commit
其中opt選項(xiàng)列出如下:
%H 提交對(duì)象(commit)的完整哈希字串
%h 提交對(duì)象的簡(jiǎn)短哈希字串
%T 樹(shù)對(duì)象(tree)的完整哈希字串%t 樹(shù)對(duì)象的簡(jiǎn)短哈希字串
%P 父對(duì)象(parent)的完整哈希字串
%p 父對(duì)象的簡(jiǎn)短哈希字串%an 作者(author)的名字
%ae 作者的電子郵件地址
%ad 作者修訂日期(可以用 -date= 選項(xiàng)定制格式)
%ar 作者修訂日期,按多久以前的方式顯示
%cn 提交者(committer)的名字
%ce 提交者的電子郵件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式顯示
%s 提交說(shuō)明
2.圖形化查看本地歷史gitk
如果你覺(jué)得git log這種命令行方式查看與顯示提交記錄不夠直觀,Git也提供了圖形化方式顯示提交記錄。
jay@pc MINGW64 /d/my_project/gittest (master)$ gitk
3.查看本地歷史操作git reflog
無(wú)論是gitk還是git log都僅能查看最終在倉(cāng)庫(kù)存在的提交信息,無(wú)法查看被刪除的提交,以及在本地具體Git命令操作記錄,這時(shí)候你需要使用git reflog。
jay@pc MINGW64 /d/my_project/gittest (master)$ git reflog
ea3925e (HEAD -> master) HEAD@{0}: am: Add initial platform and update test
fdec58a HEAD@{1}: am --abort
fdec58a HEAD@{2}: am: Initial application and test
867df08 (origin/master, origin/HEAD) HEAD@{3}: reset: moving to HEAD~1
b69153f HEAD@{4}: am: Initial application and test
867df08 (origin/master, origin/HEAD) HEAD@{5}: reset: moving to HEAD~2
610feaf HEAD@{6}: commit: Add initial platform and update test
589f65b HEAD@{7}: reset: moving to HEAD
589f65b HEAD@{8}: reset: moving to HEAD
589f65b HEAD@{9}: reset: moving to 589f65b
4378dee HEAD@{10}: commit: Initial platform and driver
589f65b HEAD@{11}: reset: moving to 589f65b
1eaa025 HEAD@{12}: reset: moving to HEAD
1eaa025 HEAD@{13}: commit: Initial platform and driver
589f65b HEAD@{14}: commit (amend): Initial application and test
0a0c0fc HEAD@{15}: commit: Initial application
867df08 (origin/master, origin/HEAD) HEAD@{16}: rebase finished: returning to refs/heads/master
867df08 (origin/master, origin/HEAD) HEAD@{17}: rebase: second commit
5fe04f8 HEAD@{18}: rebase: checkout refs/remotes/origin/master
aa9db9d HEAD@{19}: commit: second commit
5fe04f8 HEAD@{20}: reset: moving to HEAD
5fe04f8 HEAD@{21}: clone: from git@github.com:JayHeng/gittest.git