[教學] git-9 查看紀錄 - 討論區

[教學] git-9 查看紀錄

文章瀏覽次數 837 文章回覆數 8

特種兵

特種兵圖像(預設)

2020-02-24 09:34:13

From:211.23.21.202

基本款

之前我們已經做了幾次 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

從上面的資訊可以看出我們目前有兩個提交:

  1. 越新的資訊會在越上面
  2. 是誰在什麼時候 commit 的
  3. 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 來查尋。

留言

#1

審錢

審錢圖像(預設)

2020-02-25 18:33:50

From:211.74.191.230

我當初看到git的教學,發現要打很多指令頭就暈了,今天比較有閒暇時間,於是乎也來玩一夏,其實感覺也還好耶,雖然看到後來才知道指令可以用shift+insert貼上,但不知為何我很享受這種手打指令的感覺,打久了感覺也習慣了,謝謝站長老大的用心。

#2

coscell

coscell圖像(預設)

2020-02-25 18:59:34

From:180.176.111.5

實際想個專案來做會更有趣喔!
做成了成就敢試無與倫比的!

#3

特種兵

特種兵圖像(預設)

2020-02-28 10:51:06

From:1.161.143.134

其實是有圖型介面程式可以用,所以不一定要手動打指令
大家有興趣可以找看看哪套 git gui 對 NVDA 的支援度比較好再上來分享

#4

貓貓蟲

貓貓蟲圖像

2020-02-28 13:44:12

From:220.132.235.31

最後我再來分享GitHub和Gitlab好了

git 的GUI其實我也不會用XDD 看不太懂

還是打指令方便

#5

阿慶

阿慶圖像

2020-02-28 19:19:08

From:122.116.71.150

只聽過 GitHub,原來還有 Gitlab 啊

#6

午夜幽灵

午夜幽灵圖像(預設)

2022-05-18 16:34:26

From:161.129.34.12

你好我看着你的文章,我输入git log他就提示如下: fatal: not a git repository (or any of the parent directories): .git 。
不能查询提交过的记录

#7

Maxe

Maxe圖像(預設)

2022-05-18 23:33:21

From:36.230.219.6

Hi!
請從這裡開始閱讀。

#8

特種兵

特種兵圖像(預設)

2022-05-20 16:16:23

From:211.23.21.202

確定有在加入git的路徑下嗎?