前言:
教程來源于Udacity的免費教程-用Git進行版本控制驼仪,這里僅是個人的筆記望浩,參考使用。
查看倉庫的歷史記錄需要如下兩個命令:
git log:用于顯示倉庫中所有 commit 的信息豌注。
默認情況下妙真,該命令會顯示倉庫中每個 commit 的:
SHA
作者
日期
消息
我強調(diào)了“默認情況下”是因為 git log 命令顯示的信息遠不止這些。
git show:顯示特定的提交信息最疆。傳遞一個SHA值杯巨,即可以顯示當(dāng)前SHA標(biāo)記的提交狀態(tài)。
git 使用命令行分頁器 less 瀏覽所有信息努酸。以下是 less 的重要快捷鍵:
要按行向下滾動服爷,使用 j 或 ↓
要按行向上滾動,使用 k 或 ↑
要按頁向下滾動获诈,使用空格鍵或 Page Down 按鈕
要按頁向下滾動仍源,使用 b 或 Page Up 按鈕
要退出,使用 q
比如在查看config時:
git config --list
當(dāng)前屏幕顯示不出來所有的內(nèi)容舔涎,可以通過輸入j,k笼踩,向上向下滾動,并輸入q退出
“:”符號表示终抽,下面還有更多的內(nèi)容戳表。
當(dāng)出現(xiàn)END時,意味著這是最后一次提交昼伴,最后一條信息了
更改git log顯示信息的方式
思考一下這些問題:
SHA - git log 將顯示每個 commit 的完整 SHA匾旭。每個 SHA 都是唯一的,因此圃郊,我不需要查看整個 SHA价涝。只需知道前 6-8 個字符即可。如果我們能只顯示 SHA 的前 5 個左右的字符持舆,是不是會節(jié)省一些空間色瘩?
作者 - git log 輸出結(jié)果顯示了每個 commit 的作者!其他倉庫可能有多個人協(xié)作逸寓,因此情況可能不同居兆,但是對于此倉庫,只有一個人提交了所有的 commit竹伸,因此所有 commit 的作者是一樣的泥栖。我們需要查看每個 commit 的作者嗎簇宽?如果我們想隱藏這一信息呢?
日期 - 默認情況下吧享,git log 將顯示每個 commit 的日期魏割。但是我們真的關(guān)心 commit 的日期嗎?知道日期有時會很重要钢颂,但是每次都知道日期并不十分重要钞它,在很多情況下都可以忽略。能否隱藏該信息殊鞭,以便節(jié)省空間遭垛?
commit 消息 - 這是 commit 消息最重要的部分…我們通常都希望看到此信息。
如何使輸出結(jié)果更簡短操灿,并節(jié)省大量空間耻卡?我們可以使用 選項。
提示:這并不是一種命令行進程牲尺,但是選項可以用來更改程序的工作方式。例如幌蚊,ls
命令將列出當(dāng)前目錄下的所有文件谤碳。ls
命令具有 -l
選項 (即 ls -l
),它會運行相同的 ls
命令溢豆,但是會更改其工作方式蜒简;它會顯示 long 格式的信息(-l
表示 long)。
選項可以用來更改程序的工作方式和顯示的信息漩仙。要詳細了解命令行程序和選項搓茬,請參閱我們的 Linux 命令行基礎(chǔ) 課程。
git log --oneline
git log 命令有一個選項队他,可以用來更改倉庫信息的顯示方式卷仑。該選項為 --oneline:
$ git log --oneline
看看輸出結(jié)果有何不同!
(官方教程截圖麸折,我的還沒有提交記錄....)
這種簡潔的顯示方式有助于我們快速的查看倉庫(repo)中的提交锡凝。
此命令:
每行顯示一個 commit
顯示 commit 的 SHA 的前 7 個字符
顯示 commit 的消息
查看修改后的文件
git log --stat 簡介
The git log 命令有一個選項可以用來顯示 commit 中更改的文件以及添加或刪除的行數(shù)。該選項為 --stat(stat 是“統(tǒng)計信息 statistics”的簡稱):
$ git log --stat
運行該命令并查看顯示結(jié)果垢啼。
css/app.css | 31 ++++++ 代表一共添加31行
index.html |118 +++++++---------代表一共添加或是刪除 118行
2 file changed,91 insertions(+),58 deletions(-)
2個文件更改窜锯,91個文件插入,58個文件被刪除
此命令會:
顯示被修改的文件
顯示添加/刪除的行數(shù)
顯示一個摘要芭析,其中包含修改/刪除的總文件數(shù)和總行數(shù)
查看文件更改
我們知道 git log 將顯示倉庫中的 commit锚扎,如果添加 --stat 選項,則可以看出修改了哪些文件以及添加/刪除了多少行代碼馁启。如果能查看到底進行了哪些更改驾孔,是不是更棒?
例如,在博客項目中助币,commit a3dc99a 具有消息"center content on page"并通過添加 5 行內(nèi)容修改了 CSS 文件浪听。到底添加了哪 5 行?如何找出這 5 行眉菱?
git log -p
git log 命令具有一個可用來顯示對文件作出實際更改的選項迹栓。該選項是 --patch,可以簡寫為 -p:
$ git log -p
運行該命令并查看顯示結(jié)果俭缓。
帶注釋的 git log -p 輸出
我們通過上述圖片快速總結(jié)下 git log -p 的輸出:
?? - 正在顯示的文件
?? - 文件第一版的哈希值和第二版的哈希值
通常不重要克伊,因此可以忽略
?? - 文件的舊版本和當(dāng)前版本
?? - 添加的行所在的位置以及添加了多少行
-15,83 表示舊版本(用 - 表示)從第 15 行開始,顯示了 83 行
+15,85 表示當(dāng)前版本(用 + 表示)從第 15 行開始华坦,現(xiàn)在變成了 85 行...這 85 行顯示在下方
?? - 在 commit 中實際進行的更改
用紅色標(biāo)示并以減號 (-) 開頭的行是位于文件原始版本中愿吹,但是被 commit 刪除的行
用綠色標(biāo)示并以加號 (+) 開頭的行是 commit 新加的行
git log -p 小節(jié):
此命令會向默認輸出中添加以下信息:
顯示被修改的文件
顯示添加/刪除的行所在的位置
顯示做出的實際更改
查看特定的 commit
上一部分的最后幾個練習(xí)需要在補丁輸出中不斷向下滾動,以便找到正確的 commit 并查看其信息惜姐。如果能顯示特定 commit 的詳情犁跪,而不用關(guān)心倉庫中的所有其他內(nèi)容,是不是很棒歹袁?
實際上有兩種實現(xiàn)方式坷衍!
向 git log 提供你要查看的 commit 的 SHA
使用新的 git show 命令
它們都很簡單,我們先學(xué)習(xí) git log 方式条舔,然后再學(xué)習(xí) git show枫耳。
你已經(jīng)知道如何使用以下命令輸出信息:
git log
git log --oneline
git log --stat
git log -p
但是你是否知道,可以向所有這些命令提供 commit 的 SHA 作為最后一個參數(shù)孟抗?例如:
$ git log -p fdf5493
通過提供 SHA迁杨,git log -p 命令將從這條 commit 開始!無需滾動并逐條查閱凄硼!注意铅协,它還會顯示在所提供的 SHA 之前提交的所有 commit 信息。
新命令:git show
另一個顯示特定 commit 的命令是 git show:
$ git show
運行上述示例命令將僅顯示最近的 commit帆喇。通常警医,將 SHA 作為最后一個參數(shù)提供給命令:
$ git show fdf5493
git show 的作用是?
git show 命令將僅顯示一個 commit坯钦。因此预皇,如果你看不到任何其他 commit,不要驚慌婉刀。它只顯示一個 commit吟温。git show 命令的輸出和 git log -p 命令的完全一樣。因此默認情況下突颊,git show 會顯示:
commit
作者
日期
commit 消息
補丁信息
但是鲁豪,git show 可以與我們了解過的大部分其他選項一起使用:
--stat - 顯示更改了多少文件潘悼,以及添加/刪除的行數(shù)
-p 或 --patch - 顯示默認補丁信息,但是如果使用了 --stat爬橡,將不顯示補丁信息治唤,因此傳入 -p 以再次添加該信息
-w - 忽略空格變化