查看歷史提交
git log
顯示最近2次提交的內容差異
git log -2
顯示某個作者的提交
git log --author 'leo han'
列出某個時間段的提交
git log --since 2.weeks 等同於 git log --after 2.weeks
git log --since 2008.01.15
git log --since 2 years 1day 3minutes ago
限制 git log 輸出的選項 |
|
---|---|
選項 |
說明 |
-(n) |
僅顯示最近的 n 條提交 |
--since, --after |
僅顯示指定時間之後的提交。 |
--until, --before |
僅顯示指定時間之前的提交。 |
--author |
僅顯示指定作者相關的提交。 |
--committer |
僅顯示指定提交者相關的提交。 |
--grep |
僅顯示含指定關鍵字的提交 |
-S |
僅顯示添加或移除了某個關鍵字的提交 |
想知道hello這行代碼是何時加入到文件中的:
git log -S 'hello'
只需要提供 SHA-1 起始的大於4個字符就可以獲得對應的那次提交,下面的命令是等價的:
git show 1c002dd4b536e7479fe34593e72e6c6c1819e53b
git show 1c002dd4b536e7479f
git show 1c002d
查看HEAD所指的當前版本:
git reset --hard
跳轉到指定版本:
#前一個
git reset --hard HEAD^
#離現在最近的第二個
git reset --hard HEAE^^
#離現在最近的第100個
git reset --hard HEAD~100
#指定版本號
git reset --hard <commit_id>
查看引用日誌(最近幾個月你的 HEAD 和分支引用所指向的歷史):
git reflog
在每次提交的下面列出所有被修改過的文件、有多少文件被修改了以及被修改過的文件的哪些行爲被移除或是添加了:
git log --stat
選項 |
說明 |
-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(後跟指定格式)。 |
指定使用不同於默認格式的方式展示提交歷史:
git log --pretty=oneline/short/fulll/fuller
定製要顯示的記錄格式:
git log --pretty=formt:'%h- %an, %ar : %s'
Table 1. git log --pretty=format 常用的選項 |
|
選項 |
說明 |
%H |
提交對象(commit)的完整哈希字串 |
%h |
提交對象的簡短哈希字串 |
%T |
樹對象(tree)的完整哈希字串 |
%t |
樹對象的簡短哈希字串 |
%P |
父對象(parent)的完整哈希字串 |
%p |
父對象的簡短哈希字串 |
%an |
作者(author)的名字 |
%ae |
作者的電子郵件地址 |
%ad |
作者修訂日期(可以用 --date= 選項定製格式) |
%ar |
作者修訂日期,按多久以前的方式顯示 |
%cn |
提交者(committer)的名字 |
%ce |
提交者的電子郵件地址 |
%cd |
提交日期 |
%cr |
提交日期,按多久以前的方式顯示 |
%s |
提交說明 |
注:作者指實際作出修改的人,提交者指最後將此工作成果提交到倉庫的人。
如果想查找匹配某個正則表達式的代碼,可以傳入這樣子的參數 -G"<regex>"
查看merge信息
git log --merges
使用--no-merges來過濾掉這個merge信息:
git log --no-merges