1. 程式人生 > >Git---檢視提交歷史記錄

Git---檢視提交歷史記錄

概述:

我們是如何記錄我們的人生----日記,如果你那天閒來無事可以翻一翻,說明我們都是有故事的人,哈哈,如果我們想要檢視Git提交歷史記錄,怎麼辦?

1.檢視提交歷史

語法:git log

commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:28:47 2017 +0800

    Hello

commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <
[email protected]
> Date: Wed Jun 7 17:03:45 2017 +0800 將計就計 commit e9128101a2572cf0b2398ca5a281c796676d0352 Author: chenliang <[email protected]> Date: Wed Jun 7 16:58:54 2017 +0800 我提交了README commit 6ada7cad2883d636837d6072aa27cbc8f07988cb Author: chenliang <[email protected]
> Date: Wed Jun 7 16:24:38 2017 +0800 D:/install/Git/aa commit 063c0f280259c2d2a97abc08bc27dbe0b01e6e6f Author: chenliang <10401016[email protected]> Date: Wed Jun 7 09:10:29 2017 +0800 README
總結:
  • 1.時間是倒序
  • 2.commit 後面就是計算出來的SHA-1校驗
  • 3.Author 提交人 這個是在配置git config 時候配置的
  • 4.Date:提交日期
  • 5.提交內容(提交時候的註釋)

那麼問題來,如果有很多歷史記錄,我想看特定記錄,是不是需要檢索和篩選功能?

常用的引數 -p 表示每次提交的內容差異(類似使用 git diff)   -2 表示最近兩次提交

$ git log -p -2
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:28:47 2017 +0800

    Hello

diff --git a/README b/README
deleted file mode 100644
index abe187b..0000000
--- a/README
+++ /dev/null
@@ -1 +0,0 @@
-將計就計
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 (2).txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 (2).txt"
deleted file mode 100644
index e69de29..0000000
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 - \345\211\257\346\234\254.txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 - \345\211\257\346\234\254.txt"
deleted file mode 100644
index e69de29..0000000
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254.txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254.txt"
deleted file mode 100644
index e69de29..0000000
diff --git "a/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" "b/~/\346\226\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt"
deleted file mode 100644
index e69de29..0000000

commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:03:45 2017 +0800

    將計就計

diff --git a/README b/README
index 1a4cca6..abe187b 100644
--- a/README
+++ b/README
@@ -1,2 +1 @@
-Hello World!
-Hello World 這行是我新寫的
+將計就計
(END)
總結:
  • diff表示兩個檔案不同
  • index(索引)提交動作產生索引
  • -HelloWorld! 前面-表示刪除
  • +將計就計 前面+表示新增

看一些統計資訊用--stat

$ git log --stat
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:28:47 2017 +0800

    Hello

 README                                                                   | 1 -
 ...6\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254 (2).txt" | 0
 ...46\241\243 - \345\211\257\346\234\254 - \345\211\257\346\234\254.txt" | 0
 ...7\346\234\254\346\226\207\346\241\243 - \345\211\257\346\234\254.txt" | 0
 ...\260\345\273\272\346\226\207\346\234\254\346\226\207\346\241\243.txt" | 0
 5 files changed, 1 deletion(-)

commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:03:45 2017 +0800

    將計就計

 README | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

commit e9128101a2572cf0b2398ca5a281c796676d0352
:
總結:檔案被新增刪除記錄都會被儲存

看見最後的冒號(:)表示還有記錄,回車就看到

現在看起來格式不符合要求,寫過用java輸出XML檔案要想格式變得好看,format.pretty常量,git也是這樣的

語法:git log --pretty = oneline    (oneline表示顯式一行=SHA-1+註釋) ,當然還有其他值,例如:short、full、fuller

$ git log -2 --pretty=oneline
d521dd00f9b8cc3e54064abb3d8125d88e6ba412 Hello
9ddce59dbacb7160fab09c4da14523e609e9428a 將計就計
如果這個你看起來不爽,可以自定義

語法:git log --pretty=format:"你的規則" (注意等號兩邊不能有空格)

$ git log --pretty=format:"%h - %an, %ar : %s"  -2
d521dd0 - chenliang, 51 minutes ago : Hello
9ddce59 - chenliang, 76 minutes ago : 將計就計
選項	  說明
%H    提交物件(commit)的完整雜湊字串

%h    提交物件的簡短雜湊字串

%T    樹物件(tree)的完整雜湊字串

%t    樹物件的簡短雜湊字串

%P    父物件(parent)的完整雜湊字串

%p    父物件的簡短雜湊字串

%an   作者(author)的名字

%ae   作者的電子郵件地址

%ad   作者修訂日期(可以用 --date= 選項定製格式)

%ar   作者修訂日期,按多久以前的方式顯示

%cn   提交者(committer)的名字

%ce   提交者的電子郵件地址

%cd   提交日期

%cr   提交日期,按多久以前的方式顯示

%s    提交說明

如果你還覺得不夠,最後一招,--graph,用圖形拯救你,不過在分支合併時候展示非凡的特效

語法: git log --pretty=format:"%h  %s"  --grapth   (注意是兩個短槓)

*   2e78057 Merge branch 'master' into smoke
|\
| * b93ec95 Make another attempt to identify new and deleted files in Grit#Diff
| * 00ed843 Ensure RubyGit's diff matches real Git's output
| * 5012845 Fix RubyGit's diff to detect additions and deletions
| * fcd9228 use a \t to avoid tab => space conversion
* | 7b3b447 add contributing section to readme
* | c701103 have Commit#short_message use first non-empty message line. closes gh-1.
* |   1af4e64 Merge commit 'b06e7ff41ad95b6fe1dbd08df7530c9d5bf76840' into smoke
|\ \
| * | b06e7ff a few lines on gems required for testing
* | | d5cde35 windows support
* | | 797d75e update history
* | |   0bbd902 Merge commit 'a88d1d96985074db9c37f3f50a45fd089d8b4a12' into smoke
|\ \ \
:
當然git log 還有其他引數如下:
-p     按補丁格式顯示每個更新之間的差異。

--stat  顯示每次更新的檔案修改統計資訊。

--shortstat  只顯示 --stat 中最後的行數修改新增移除統計。

--name-only   僅在提交資訊後顯示已修改的檔案清單。

--name-status   顯示新增、修改、刪除的檔案清單。

--abbrev-commit  僅顯示 SHA-1 的前幾個字元,而非所有的 40 個字元。

--relative-date  使用較短的相對時間顯示(比如,“2 weeks ago”)。

--graph   顯示 ASCII 圖形表示的分支合併歷史。

--pretty   使用其他格式顯示歷史提交資訊。可用的選項包括 oneline,short,full,fuller 和 format(後跟指定格式)。

2.限制輸出長度

語法:git log  引數=值

$ git log --since=2.weeks
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:28:47 2017 +0800

    Hello

commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:03:45 2017 +0800

    將計就計

commit e9128101a2572cf0b2398ca5a281c796676d0352
Author: chenliang <[email protected]>
Date:   Wed Jun 7 16:58:54 2017 +0800

    我提交了README

commit 6ada7cad2883d636837d6072aa27cbc8f07988cb
Author: chenliang <[email protected]>
Date:   Wed Jun 7 16:24:38 2017 +0800

    D:/install/Git/aa
:
如果你想看你提交某個字串關鍵字
$ git log -S '將計就計'
commit d521dd00f9b8cc3e54064abb3d8125d88e6ba412
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:28:47 2017 +0800

    Hello

commit 9ddce59dbacb7160fab09c4da14523e609e9428a
Author: chenliang <[email protected]>
Date:   Wed Jun 7 17:03:45 2017 +0800

    將計就計
其他選選項
-(n)   僅顯示最近的 n 條提交

--since, --after  僅顯示指定時間之後的提交。

--until, --before  僅顯示指定時間之前的提交。

--author  僅顯示指定作者相關的提交。

--committer  僅顯示指定提交者相關的提交。

--grep  僅顯示含指定關鍵字的提交

-S  僅顯示新增或移除了某個關鍵字的提交
總結:主要對於git log 展示和檢索過濾資料。

相關推薦

Git---檢視提交歷史記錄

概述: 我們是如何記錄我們的人生----日記,如果你那天閒來無事可以翻一翻,說明我們都是有故事的人,哈哈,如果我們想要檢視Git提交歷史記錄,怎麼辦? 1.檢視提交歷史 語法:git log commit d521dd00f9b8cc3e54064abb3d8125d88e

Git - 檢視提交歷史

本文講解使用 git 等工具檢視提交歷史的幾種方式。 git log 在我理解中,實際上後面講的各種方法都是基於 git log 命令列工具,且對於程式設計師而言,命令列才是正統; 預設不用任何引數的話,git log 會按提交時間列出所有的更新,最近的更新排在最上面。每次更新都有一

Git的學習與使用(八)——Git 檢視提交歷史

Git 檢視提交歷史 在使用 Git 提交了若干更新之後,又或者克隆了某個專案,想回顧下提交歷史,我們可以使用 git log 命令檢視。 針對我們前一章節的操作,使用 git log 命令列出歷史提交記錄如下: $ git log commit 88afe0e02ad

git檢視提交歷史並進行程式碼回退的方法

那麼如何檢視一個檔案所進行過的提交呢? 在git下來的原始碼目錄下,執行git log 檔名  即可檢視到有關此檔案的所有提交; 例如: [email protected]:~/plugins/automount$ git log  gsd-manager.c commit 28810e41dbdd

Git 教程(7)】 Git檢視提交歷史Git標籤

Git 檢視提交歷史 在使用 Git 提交了若干更新之後,又或者克隆了某個專案,想回顧下提交歷史,我們可以使用 git log 命令檢視。 針對我們前一章節的操作,使用 git log 命令列出歷史提交記錄如下: $ git log commit 88afe0e02a

Git檢視提交歷史

Git 檢視提交歷史 在使用 Git 提交了若干更新之後,又或者克隆了某個專案,想回顧下提交歷史,我們可以使用 git log 命令檢視。 針對我們前一章節的操作,使用 git log 命令列出歷史提交記錄如下: $ git log commit 88afe0e02a

Git檢視提交歷史Git標籤

1、克隆遠端指定分支的程式碼倉庫到本地指定目錄 git clone -b lfFranceTelecomDemo [email protected]:T5/grasper.git grasper-lfFranceTelecomDemo 其中,-b引數用於指定 分

Git5.Git檢視提交歷史&版本回退

檢視提交歷史 你不斷對檔案進行修改,然後不斷提交修改到版本庫裡,就好比玩RPG遊戲時,每通過一關就會自動把遊戲狀態存檔,如果某一關沒過去,你還可以選擇讀取前一關的狀態。有些時候,在打Boss之前,你會手動存檔,以便萬一打Boss失敗了,可以從最近的地方重新開始。Git也是一

git倉庫刪除所有提交歷史記錄

-a git tac gin checkout git push 分支 init tail stackoverflow原問題地址:http://stackoverflow.com/questions/13716658/how-to-delete-all-commit-hi

git刪除所有提交歷史記錄

mes 代碼 upd 本地 delete 並且 one IT ren 把舊項目提交到git上,但是會有一些歷史記錄,這些歷史記錄中可能會有項目密碼等敏感信息。如何刪除這些歷史記錄,形成一個全新的倉庫,並且保持代碼不變呢? 以下方法是在當前的分支下新建一個分支,然後把之前分支

git實操筆錄一:刪除所有提交歷史記錄,成為一個新倉庫

在使用git的過程中,大家有時會複製一個git倉庫專案作為模板進行新專案開發,這樣老專案提交的歷史記錄也同樣存在新專案中,我們該怎麼去掉這些歷史記錄呢?讓這個新專案成為一個乾淨的新的專案,可以看看我的操作: 1.建立新分支並且切換到新分支中: git checkout --o

git倉庫刪除所有提交歷史記錄,成為一個乾淨的新倉庫

把舊專案提交到Git上,但是會有一些歷史記錄,這些歷史記錄中可能會有專案密碼等敏感資訊。如何刪除這些歷史記錄,形成一個全新的倉庫,並且保持程式碼不變呢? 步驟和程式碼如下: 1.Checkout git checkout --orphan latest_branch 2.

Git命令(檢視倉庫歷史記錄

git log 命令 // 終端顯示 git log 命令的輸出結果 zhanghuabin-mac:course-git-blog-project zhanghuabin$ git log commit a3dc99a197c66ccb87e3f49055

Git 提交歷史記錄

一、檢視舊提交 在引數形式上,git log 和 git log HEAD 是一樣的,輸出每一個可以從 HEAD 找到的歷史記錄中的提交日誌訊息。注意當回溯歷史記錄的時候,Git 是依附於提交圖的,而不是時間。 限制歷史記錄的一種技術是使用 since..u

Git--log 檢視提交歷史

git中檢視提交歷史的話,使用的是 git log命令,具體命令及含義如下: 注意:以下截圖中, Author 表示對程式碼做出修改的人 AuthorDate 表示對程式碼做出

git學習------>如何修改git提交記錄中的Author和Email?

一、背景 最近搭建好GitLab後,準備陸陸續續的將之前在SVN倉庫中儲存的程式碼遷移到GitLab上,昨天順利將三個Android元件的程式碼遷移到GitLab後,其他同事發現遷移是成功了,但是pull下來命令後檢視git log 發現所有人的有些都配

將CVS遷移到Git並保留歷史記錄和分支

二話不說,先看程式碼:cat run.sh #!/bin/sh #rsync -av [email protected]::/cvshome/module/ /data/cvs_migration/CVSRepo/module rm -rf /data/cv

Activiti檢視流程歷史記錄(六)

1.畫流程圖。 2.部署流程。 3.啟動流程例項。 4.檢視流程任務(可無)。 5.辦理任務。 6.檢視流程歷史記錄。 流程引擎: ProcessEngine pe = ProcessEngines.

git commit提交次數記錄合併

1、在自己分支執行: git log  2、然後copy 你想要進行合併的上一條 唯一生成的一長串標識 3、:q 回到自己的分支,執行:git rebase --interactive  "在log中

檢視修改的歷史記錄 git log 命令 和 返回上一次修改版本 git reset 、git reflog(五)

上一篇,已經學會了修改檔案,然後再把修改檔案提交到Git版本庫,now,再重複執行一次,修改index.html檔案如下: 然後執行新增、提交: 像這樣,你不斷對檔案進行修改,然後不斷提交修改到版本庫裡,每次修改到一定程度時,再提交;一旦你把檔案改亂了,或者誤刪了檔案,還可以從最