Git新手教程-查看倉庫的歷史記錄(四)

前言

在前面的文章中,咱們學習瞭如何建立倉庫。如今咱們將學習如何查看倉庫的歷史記錄,之因此沒有先講解如何向倉庫如何提交commit,是由於我以爲,只有先了解歷史記錄中包含哪些信息後,咱們才能更好的建立良好的提交。有了良好的提交,纔會有助於之後咱們對項目的總體回顧。在本文章中,咱們將介紹 git loggit show 兩個指令,這裏先簡單介紹一下這兩個命令的功能。java

  • git log:查看現有的提交信息
  • git show:能夠顯示給定提交的信息。

git log 命令

固然使用 git log 命令,咱們首先須要一個現有的Git倉庫,這裏仍是以我本身的項目SimpleEyes項目爲例。git

還記得咱們以前的介紹的 git clone 命令嗎?咱們先 clone 該項目吧.github

git clone https://github.com/AndyJennifer/SimpleEyes
複製代碼

克隆該項目後,咱們經過 cd 命令進入該項目,使用 git log 命令,咱們能獲得下列輸出:算法

git_log展現界面.png

歷史記錄分析

默認狀況下,使用 git log 命令會顯示倉庫中每一個 commit 的詳細提交信息。結合上圖,咱們來分析下每行所表明的具體內容。這裏以第一個歷史提交記錄爲例:安全

  • commit頭信息
commit 543019ea4bca77c31ccd1d06c4ca2ca4b1d69b23 (HEAD -> master, origin/master, origin/HEAD)
複製代碼

在Git中會爲每一個提交生成一個ID,也就是SHA。在本行中不只顯示了提交的ID,當前所指向的分支爲 master ,固然如今咱們可能還不瞭解分支的相關信息,不過請你們放心,咱們會在後續的文章中學到它的。bash

SHA是一個長 40 個字符的字符串(由 0–9 和 a–f 組成),並根據 Git 中的文件或目錄結構的內容計算得出。SHA 的全稱是"Secure Hash Algorithm"(安全哈希算法)。若是你想了解哈希算法,能夠參考SHA家族app

  • 做者
Author: AndyJennifer <1225868370@qq.com>
複製代碼

當前行顯示了提交這個commit的做者以及對應郵件信息。現階段這個倉庫只有我一我的維護,因此這裏全是個人相關信息。固然,若是你的倉庫是多人協做開發,那麼不一樣的做者提交的commit所對應的Author也會不一樣啦。less

  • 日期
Date:   Thu Aug 29 23:43:07 2019 +0800
複製代碼

日期,很簡單,就是現實當前 commit 的時間,通常狀況下,咱們是不會關心它的。ide

  • commit消息
修改了切換視頻時,controller沒有設置,致使的空指針異常
複製代碼

通常狀況下,咱們須要爲每次提交的內容進行說明,好比增長了什麼功能,修改了什麼bug等等。一個良好的commit 提交內容與提交消息之間應該有着一一對應的關係,而不是表述模糊,張冠李戴。學習

git log 命令行日誌瀏覽快捷鍵

若是你是第一次使用git log命令,可能會有一個疑問,如何加載更多的歷史記錄呢?如何退出呢?若是你們仔細觀察,在咱們的界面中末尾有個冒號,該冒號代表還能夠顯示更多的輸出行。在Git中是使用 Less 程序做爲其分頁器,若是你不熟悉 less 或分頁器也沒有問題。你們只要知道該分頁器是用於翻頁並瀏覽內容的就好了。下面咱們看看該分頁器對應的按鍵指令。

要向下滾動:

  • j 一次向下移動一行
  • d 按照一半的屏幕幅面移動
  • f 按照整個屏幕幅面移動

要向上滾動:

  • k 一次向上移動一行
  • u 按照一半的屏幕幅面移動
  • b 按照整個屏幕幅面移動

須要注意的是,當冒號變爲單詞END時,表示記錄顯示完畢,那麼咱們能夠按下 q 能夠離開分頁器。

更改 git log 顯示信息的方式

git log --oneline

使用 git log 命令,會顯示日期、做者、commit消息等信息,可是有些狀況下,咱們可能並不關心日期、或相關做者。咱們只想快速的瀏覽具體的提交信息,那麼咱們能夠爲當前的 git log 命令,增長一個選項 --oneline

注意這裏是 oneline 而不是 online

使用 git log --oneline 咱們能獲得以下輸出:

git-log--oneline展現.png

使用 git log --oneline 命令會:

  • 每行顯示一個 commit
  • 顯示 commit 的 SHA 的前 7 個字符
  • 顯示 commit 的消息

查看修改後的文件

在瞭解了 git log --oneline 命令後,咱們可能會想深刻了解某個commit更改了哪一個或哪些文件。這個時候咱們須要 git log 的另外一個選項 --stat

stat 是單詞 statistics ,爲統計的意思。

使用 git log --stat 命令,咱們能獲得以下輸出:

這裏爲了方便講解,我只截取了特徵明顯的commit

git-log--stat展現.png

上圖中最後一行,代表此次提交共涉及到8個文件的修改,160行的插入,5行的刪除。其中build.gradle文件中刪除了1行,UserPreferences.kt中添加或刪除了2行......相信到這裏你們就明白了,使用命令git log --stat會:

  • 顯示被修改的文件
  • 顯示添加/刪除的行數
  • 顯示一個摘要,其中包含修改/刪除的總文件數和總行數

查看文件更改

在上文中,我麼已經經過添加 --stat 選項,能夠知道修改了哪些文件,以及添加/刪除了多少行代碼。若是能查看文件中到底進行了哪些更改,是否是更好呢?在 git log 命令中具備一個可用來顯示對文件做出實際更改的選項,就是 --patch ,能夠簡寫爲 -p

例如,咱們想查看下圖中具體的修改:

git-log-p1.png

咱們使用 git log -p 命令,咱們可以獲得一下輸出:

git-log-p2.jpg

在上述輸出信息中,包含5個比較重要的信息:

  • 第一個:diff顯示了原始版本與新版本間的差別,咱們如今看到的IjkVideoView.java文件,其中a/app/../IjkVideoView.java爲該文件的第一個版本,b/app/../IjkVideoView.java爲新版本。
  • 第二個:顯示了第一個版本文件的哈希值與文件更改後的哈希值,這些哈希值和提交的 SHA 是不一樣的。
  • 第三個:也是顯示了不一樣版本的文件差別,其中 - 表示舊版本, + 表示新版本。
  • 第四個:添加的行所在的位置以及添加了多少行。
    • -333,8表示原始版本(用 - 表示),從338行開始,顯示了8行。
    • +333,10表示新版本(用 + 表示),從338行開始,如今變成了10行,這10行在命令窗口中顯示了。
  • 第五個:表示了在commit中實際進行的更改。
    • 用紅色並以 減號(-)開頭的行是位於文件原始版本中,可是被 commit 刪除的行
    • 用綠色標示並以 加號(+)開頭的行是 commit 新加的行

查看特定的commit

上文中涉及到的命令,是對所有的歷史記錄進行瀏覽,若是說可以單獨的顯示某個提交信息是否是很棒呢?在Git中有兩種方式來查看特定的提交。

  • 使用 git log 提供你要查看的 commit 的 SHA
  • 使用 git show

這裏咱們先 git log 方式,而後再學習 git show。

使用 git log 方式

在上文中,咱們已經學會如何使用如下命令輸出信息:

  • git log
  • git log --oneline
  • git log --stat
  • git log -p

可是你是否知道,能夠向全部這些命令提供 commit 的 SHA 做爲最後一個參數?例如:

git log 543019ea
複製代碼

在Git中支持完整的 SHASHA前七個字符 做爲具體的查詢條件。

須要注意的是使用git log+ SHA 的這種方式,並不會單獨的顯示某個提交。而是命令行將從這條提交開始輸出歷史記錄,你仍然能夠經過Git提供的分頁器,查看該條提交信息以後的記錄。

使用 git show 方式

使用 git show + SHA 的方式,能夠顯示特定的提交信息。如

git show 543019ea
複製代碼

git show默認狀況下會顯示:

  • commit頭信息
  • 做者
  • 日期
  • commit 消息
  • 具體的文件差別

這裏就再也不暫時示例圖片了,但願你們多多練習,並查看最終效果吧。

IntelliJ IDEA or Android Sutdio 圖形化界面的使用

最後仍是回到咱們熟悉的圖形化界面的使用流程中。咱們來看看IDEA爲咱們提供了哪些便利吧。

經過依次點擊編譯器底部的Version Control->Log,咱們能獲得以下界面:

studioLog界面顯示.jpg

如今分別上圖標註的內容進行介紹:

  1. 提交記錄展現列表:在該區域顯示了咱們全部的提交內容,包含commit信息、做者、日期。
  2. 搜索框:咱們能根據關鍵字搜索到咱們想要查詢的提交信息。
  3. User篩選框:咱們能夠篩選其餘做者的提交信息
  4. Date篩選框:根據日期來查詢提交信息。
  5. 經過點擊相關提交記錄,咱們能查看對應提交對文件的操做(增長,刪除,更改),若是點擊相關文件,能夠查看當前提交內容與上個版本的區別。
  6. 經過點擊相關提交記錄,咱們能查看到詳細的提交信息,包括SHA值,提交用戶,郵件等其餘信息。

最後

站在巨人的肩膀上,才能看的更遠~

相關文章
相關標籤/搜索