基本款
之前我們已經做了幾次 commit 的提交,那我們應該怎麼查看這些紀錄呢?指令是 git log
$ git log
commit 462682ddf12ddebd3e7b4c6796ffb0907560f08b (HEAD -> master)
Author: Logo Kuo <logo@forblind.org.tw>
Date: Sun Feb 16 13:34:36 2020 +0800
沒東西
commit 0fdb52fe4c91c1f2b342922ea031ab63c6d1078f
Author: Logo Kuo <logo@forblind.org.tw>
Date: Sun Feb 16 13:01:25 2020 +0800
加入git並新增welcome.txt檔案
我後來有把 user.name 跟 user.email 改過,所以這邊的紀錄不是 nvda
從上面的資訊可以看出我們目前有兩個提交:
- 越新的資訊會在越上面
- 是誰在什麼時候 commit 的
- commit 的內容是什麼
至於在每個 commit 後面的那串像亂碼的字串是什麼?462682ddf12ddebd3e7b4c6796ffb0907560f08b
那是使用 sha1 演算法產生出來的每個提交代號,它的重複率非常非常低,所以我們可以把它當作是每個版本的代號。
在 git 當中就是認這個代號,像是我們要切換到不同的 commit 狀態就要靠這些代號,這也就是所謂的版本號了。
而在最上面的 commit 後面有個 (HEAD -> master)
是告訴我們目前正處在這個 commit 版本狀態中。
master
是預設的主分支,這部分我們之後再說。
另外,git log 可以有一些參數,例如 --oneline
$ git log --oneline
462682d (HEAD -> master) 沒東西
0fdb52f 加入git並新增welcome.txt檔案
這樣每個 commit 就只有一行,如果我們想快速的瀏覽很多 commit 的時候就很方便,
像是我們只有自己 commit 所以可以略掉那些作者資訊,最主要有版本號、commit內容跟位在何處就足夠了。
這邊的版本號也縮短了,對 git 來說只要前面的 6 到 8 碼其實就夠了。
那如果前幾碼有重複的話也沒關係,git 會告訴我們無法辨識,此時就再多打幾碼就好。
還有一個 --graph
的參數:
$ git log --oneline --graph
* 462682d (HEAD -> master) 沒東西
* 0fdb52f 加入git並新增welcome.txt檔案
跟剛剛的 --oneline
比起來只有一個不同,就是最前面多了 *` 星號。
其實在圖形介面中可以看到,藍色圈圈與空心圈圈,空心圈圈就是 HEAD 所在版本,沒關係,我們看字也看得出來。
進階版
如捰有很多 log 的狀況,需要使用某些條件來查尋 log 而不是逐條逐條的看,應該怎麼做?
# 查詢提交者是 logo 的紀錄
$ git log --oneline --author='logo'
462682d (HEAD -> master) 沒東西
0fdb52f 加入git並新增welcome.txt檔案
那因為目前都是 logo 提交的,所以看起來都一樣。
在引號中使用 |
或符號,就可以查到多個提交者的 commit
因為是在引號中,所以在或符號前面要再加上一個反斜線 \
來跳脫才有效,
不然 git 會以為 |
這個符號也是作者名字的一部份。
想找 commit 內容有提到 東西
這兩個字的紀錄:
$ git log --oneline --grep='東西'
462682d (HEAD -> master) 沒東西
想找跟 welcome.txt
這個檔案變動有關的紀錄
$ git log --oneline -- welcome.txt
0fdb52f 加入git並新增welcome.txt檔案
實際上 commit 沒提到這個檔案也無所謂,因為他找的不是 commit 內容而是實際更動的動作。
多檔案就使用空格隔開檔名即可。
而要不要加 --oneline
只是 log 顯示的方式,並不影響搜尋結果。
也可以用時間段來查找相關紀錄,例如查尋今天早上九點到中午十二點的所有紀錄
$ git log --oneline --since="9am" --until="12am"
目前沒有,所以沒有找到。
$ git log --oneline --since="9am" --until="17fm" --after='2020-02-01'
462682d (HEAD -> master) 沒東西
0fdb52f 加入git並新增welcome.txt檔案
上面是查找從 2020 年 2 月 1 號以後每天早上 9 點到下午 5 點的所有紀錄。
$ git log --oneline -S '你'
0fdb52f 加入git並新增welcome.txt檔案
上面的搜尋條件是提交的檔案內容有 你
這個字的紀錄,
因為我們在該筆紀錄中,welcome.txt
裡有寫入 你好
這兩個字。
其實還有很多參數用法,可以使用 git log --help
來查尋。