git檢視提交 工作日誌

2021-06-17 01:21:16 字數 4751 閱讀 3115

顯示簡寫的sha-1

$ git log --abbrev-commit --pretty=oneline

ca82a6d changed the verison number

085bb3b removed unnecessary test code

a11bef0 first commit

指明一次提交的最直接的方法要求有乙個指向它的分支引用。這樣,你就可以在任何需要

乙個提交物件或者 sha-1 值的 git 命令中使用該分支名稱了。如果你想要顯示乙個分支的

最後一次提交的物件,例如假設 topic1 分支指向 ca82a6d,那麼下面的命令是等價的:

$ git show ca82a6dff817ec66f44342007202690a93763949

$ git show topic1

如果你想知道某個分支指向哪個特定的 sha

$ git rev-parse topic1

ca82a6dff817ec66f44342007202690a93763949

git log是檢視提交日誌,而reflog是你clone下來後,你所做動作的日誌。

$ git reflog

734713b... head@: commit: fixed refs handling, added gc auto, updated

d921970... head@: merge phedders/rdocs: merge made by recursive.

1c002dd... head@: commit: added some blame and merge stuff

1c36188... head@: rebase -i (squash): updating head

95df984... head@: commit: # this is a combination of two commits.

1c36188... head@: rebase -i (squash): updating head

7e05da5... head@: rebase -i (pick): updating head

如果你想檢視倉庫中 head 在五次前的值,你可以使用引用日誌的輸出中的 @n 引用:

$ git show head@
你也可以使用這個語法來檢視一定時間前分支指向**。例如,想看你的 master 分支昨天在哪,你可以輸入

$ git show master@
它就會顯示昨天分支的頂端在哪。這項技術只對還在你引用日誌裡的資料有用,所以不能用來檢視比幾個月前還早的提交。

想要看類似於 git log 輸出格式的引用日誌資訊,你可以執行 git log -g:

$ git log -g master

commit 734713bc047d87bf7eac9674765ae793478c50d3

reflog: master@ (scott chacon )

reflog message: commit: fixed refs handling, added gc auto, updated

author: scott chacon date:

fri jan 2 18:32:33 2009 -0800

fixed refs handling, added gc auto, updated tests

commit d921970aadf03b3cf0e71becdaab3147ba71cdef

reflog: master@ (scott chacon )

reflog message: merge phedders/rdocs: merge made by recursive.

author: scott chacon date:

thu dec 11 15:08:43 2008 -0800

merge commit 'phedders/rdocs'

需要注意的是,日誌引用資訊只存在於本地——這是乙個你在倉庫裡做過什麼的日誌。其他人的倉庫拷貝裡的引用和你的相同;而你新轉殖乙個倉庫的時候,引用日誌是空的,因為

你在倉庫裡還沒有操作。只有你轉殖了乙個專案至少兩個月,git show [email protected]才會有用——如果你是五分鐘前轉殖的倉庫,將不會有結果返回

假設你的工程歷史是這樣的:

$ git log --pretty=format:'%h %s' --graph

* 734713b fixed refs handling, added gc auto, updated tests

*d921970 merge commit 'phedders/rdocs'

|\| * 35cfb2b some rdoc changes

* | 1c002dd added some blame and merge stuff

|/* 1c36188 ignore *.gem

* 9b29157 add open3_detach to gemspec file list

那麼,想看上一次提交,你可以使用 headˆ,意思是「head 的父提交」:

$ git show head^

commit d921970aadf03b3cf0e71becdaab3147ba71cdef

merge: 1c002dd... 35cfb2b...

author: scott chacon date:

thu dec 11 15:08:43 2008 -0800

merge commit 'phedders/rdocs'

另外乙個指明祖先提交的方法是 ~。這也是指向第一父提交,所以 head~ 和 headˆ 是等價的。當你指定數字的時候就明顯不一樣了。head~2 是指「第一父提交的第一父提交」,

也就是「祖父提交」——它會根據你指定的次數檢索第一父提交。例如,在上面列出的歷史記錄裡面,head~3 會是

$ git show head~3

commit 1c3618887afb5fbcbea25b7c013f4e2114448b8d

author: tom preston-werner date:

fri nov 7 13:47:59 2008 -0500

ignore *.gem

也可以寫成 headˆˆˆ,同樣是第一父提交的第一父提交的第一父提交:

$ git show head^^^

commit 1c3618887afb5fbcbea25b7c013f4e2114448b8d

author: tom preston-werner date:

fri nov 7 13:47:59 2008 -0500

ignore *.gem

顯示當前分支與遠端分支相比,獨有的差異

$ git log origin/master..head
你也可以留空語法中的一邊來讓 git 來假定它是head。例如,輸入 git log origin/master.. 將得到和上面的例子一樣的結果—— git 使用 head 來代替不存在的一邊。

你想要檢視你的試驗分支上哪些沒有被提交到主分支,那麼你就可以使用 master..experiment來讓 git 顯示這些提交的日誌——這句話的意思是「所有可從experiment分支中獲得而不能從master分支中獲得的提交」。為了使例子簡單明瞭,我使用了圖示中提交物件的字母來代替真實日誌的輸出,所以會顯示:

$ git log master..experiemnt

dc

另一方面,如果你想看相反的——所有在 master 而不在 experiment 中的分支——你可以交換分支的名字。experiment..master 顯示所有可在 master 獲得而在 experiment 中

不能的提交

$ git log experiment..master

fe

這是雙點提交的例子,更複雜的多點提交例子需檢視pro git 6.1節

如果你想查詢所有從refa或refb包含的但是不被refc包含的提交,你可以輸入下面中的乙個

$ git log refa refb ^refc

等價於

$ git log refa refb --not refc

這個可以指定被兩個引用中的乙個包含但又不被兩者同時包含的分支。

$ git log master...experimentfe

dc

這個再次給出你普通的log輸出但是只顯示那四次提交的資訊,按照傳統的提交日期排列。

這種情形下,log命令的乙個常用引數是--left-right,它會顯示每個提交到底處於哪一側的分支。這使得資料更加有用。

$ git log --left-right master...experiment

< f

< e

> d

> c

20070323工作日誌

11 32 今天先來第一件事就把昨天查詢的開題報告資料copy到電腦上 然後就開始寫開題報告,這個開題報告真麻煩 分開題報告 文獻綜述和任務書三個部分 開始以為有怎麼資料,湊湊copy應該就差不多,後來發現pdf中copy出來的都是imag 根本沒法用,那只好晚上找 找了半天,弄弄,還是沒搞完 頭都...

20070329工作日誌

2007 3 30 10 29 28日後來就寫日誌,一直寫到下班 至於debug fz模組,昨天debug了一下,和tg模組差不多,只是在讀取role配置檔案時有所不同,側重點不同 2007 3 30 10 36 29日就是正常上班 處理了醫療模組中的乙個頁面新增和合管辦的頁面新增 增加了js驗證,...

20070330工作日誌

2007 3 30 10 29 28日後來就寫日誌,一直寫到下班 至於debug fz模組,昨天debug了一下,和tg模組差不多,只是在讀取role配置檔案時有所不同,側重點不同 2007 3 30 10 36 29日就是正常上班 處理了醫療模組中的乙個頁面新增和合管辦的頁面新增 增加了js驗證,...