
- Git 入門
- Git - 首頁
- Git - 版本控制
- Git - 基本概念
- Git - 命令列
- Git - 安裝
- Git - 首次設定
- Git - 基本命令
- Git - 獲取幫助
- Git - 工具
- Git - 速查表
- Git - 專業術語
- Git 分支
- Git - 簡述分支
- Git - 建立新分支
- Git - 切換分支
- Git - 分支和合並
- Git - 合併衝突
- Git - 管理分支
- Git - 分支工作流程
- Git - 遠端分支
- Git - 跟蹤分支
- Git - 變基
- Git - 變基與合併
- Git - 合併提交
- Git 操作
- Git - 克隆操作
- Git - 標籤操作
- Git - 別名操作
- Git - 提交操作
- Git - 暫存操作
- Git - 移動操作
- Git - 重新命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修補程式操作
- Git - 差異操作
- Git - 狀態操作
- Git - 日誌操作
- Git - HEAD 操作
- Git - origin master
- Git 撤銷
- Git - 撤銷更改
- Git - 切出
- Git - 恢復
- Git - 重置
- Git - 恢復操作
- Git - rm
- Git - 切換操作
- Git - cherry-pick
- Git - amend
- 伺服器上的 Git
- Git - 本地協議
- Git - 智慧 HTTP 協議
- Git - 簡單 HTTP 協議
- Git - SSH 協議
- Git - Git 協議
- Git - 在伺服器上獲取 Git
- Git - 設定伺服器
- Git - 守護程序
- Git - GitWeb
- Git - GitLab
- Git - 第三方託管選項
- 分散式 Git
- Git - 分散式工作流程
- Git - 為專案做貢獻
- Git - 維護專案
- 自定義 Git
- Git - 配置
- Git - 鉤子
- Git - 屬性
- Git - init
- Git - commit
Git 日誌
命令 `git log` 預設情況下按反時間順序顯示提交日誌。此命令非常有用,因為它有助於跟蹤和理解專案的歷史記錄,瞭解誰做了更改以及何時更改。
用法
1. **檢視提交歷史** - 命令 `git log` 按反時間順序顯示提交日誌,這意味著最新的提交首先列出。
每個提交條目包含
提交的唯一識別符號 **提交雜湊**。
提交的作者。
提交的日期和時間。
提交訊息。
2. **過濾提交** - 可以使用不同的選項過濾提交歷史記錄,例如
`--author=
` - 只顯示由指定作者完成的提交。 `--since` 或 `--until` - 顯示在特定日期之前或之後進行的提交。
3. **精簡輸出** - `git log` 的預設輸出通常很長且詳細,但有多種方法可以使其精簡。
`--oneline` - 每個提交都在一行中顯示,包含提交雜湊和提交訊息。
`--graph` - 顯示提交歷史的詳細圖形表示。這有助於視覺化分支和合並。
4. **顯示提交差異** - 可以使用選項 `--patch / -p` 檢視每個提交的差異 (diff)。
5. **限制提交數量** - 可以使用 `-n` 選項限制提交數量。可以為 n 值指定一個數字。
6. **按訊息搜尋提交** - 可以使用 `--grep` 選項搜尋提交。這將搜尋提交訊息中包含特定單詞或短語的提交。
7. **檢視特定檔案的提交** - 也可以檢視特定檔案的提交歷史記錄。您只需要在 `git log` 命令的末尾指定 `
語法
命令 `git log` 具有以下語法
git log
它顯示可以透過父連結從給定提交訪問的提交,但不包括以符號 `^` 為字首的提交。
git log feature-branch master ^bugfix-branch
該命令表示 **列出所有可從 feature-branch 或 master 訪問的提交**,但不包括可從 **bugfix-branch** 訪問的提交。
透過移除所有可從 **bugfix-branch** 訪問的提交,它有效地顯示了 **feature-branch** 和 **master** 獨有的提交。
在 Git 語法中,`
這意味著列表中將包含可透過 `
例如,這些命令是可互換的
git log feature-branch..master git log master ^feature-branch
這兩個命令實際上都表示列出可從 master 訪問但不可從 **feature-branch** 訪問的提交。
Git 計算兩組提交之間的對稱差,因此此格式 `
它類似於使用此表示法執行更直接的集合差運算。
例如,它可以用來識別兩個不同分支之間的差異。
git log branch1 branch2 --not $(git merge-base --all branch1 branch2) git log branch1...branch2
這兩個命令都生成可從分支 1 和 2 訪問的提交的對稱差。
此命令使用來自 `git-rev-list` 和 `git-diff` 命令的引數,允許修改顯示內容以及如何顯示每個提交引入的更改的選項。
選項
`git log` 提供以下選項
格式化選項
以下選項控制提交日誌的顯示方式
1. `--oneline` - 每個提交都顯示在一行中,包含提交雜湊和訊息。
git log --oneline
2. `--pretty=
自定義格式有一些佔位符,如下所示:
`%H` - 提交雜湊
`%h` - 縮寫提交雜湊
`%an` - 作者姓名
`%ae` - 作者郵箱
`%ar` - 作者日期,相對時間
`%s` - 提交訊息
git log --pretty=short git log --pretty=format:"%h - %an, %ar : %s"
3. `--graph` - 可以看到分支和合並歷史的 ASCII 圖表。
git log --graph
4. `--decorate[=short|full|auto|no]` - 使用此選項,可以在提交雜湊旁邊看到引用名稱。
它預設為 `auto`,基於終端輸出,確定如何顯示像 `refs/heads/`、`refs/tags/` 和 `refs/remotes/` 這樣的 ref 名稱以及提交資訊。
git log --decorate
5. `--no-decorate` - 使用此選項,無法在提交雜湊旁邊看到引用名稱。
git log --no-decorate
6. `--stat` - 每個提交引入的更改摘要。
git log --stat
過濾選項
以下選項可用於過濾提交日誌
1. `--author=
git log --author="John Doe"
2. `--grep=
git log --grep="fixed"
3. `--since=
git log --since="2015-01-01" --until="2015-01-02"
4. `--after=
git log --after="2015-01-01" --before="2015-01-05"
5. `--all` - 可以看到所有分支的提交歷史。
git log --all
限制選項
以下選項可用於限制提交日誌
1. `-n
git log -n=5
2. `-p` - 可以使用選項 `--patch / -p` 檢視每個提交的差異 (diff)。
git log -p
3. `--max-count=
git log --max-count=5
4. `--skip=
git log --skip=5
5. `--reverse` - 反轉提交順序。
git log --reverse
其他選項
其他一些雜項選項如下所示
1. `--follow` - 即使檔案被重新命名,`git log` 中的 `--follow` 選項也會跟蹤其歷史記錄,但這僅適用於跟蹤單個檔案。
git log --follow
2. `--decorate-refs=
git log --decorate-refs="refs/heads/*"
3. `--decorate-refs-exclude=
git log --decorate-refs-exclude="refs/heads/*"
4. `--name-only` - 只顯示每個提交中更改的檔案的名稱。
git log --name-only
5. `--name-status` - 只顯示每個提交中更改的檔案的狀態,例如已新增、已修改或已刪除。
git log --name-status
6. `-S
git log -S"fixed"
7. `--clear-decorations` - Git `log` 命令中的 `--clear-decorations` 選項預設情況下會擴充套件修飾以包含所有引用,並重置任何之前的 `--decorate-refs` 或 `--decorate-refs-exclude` 設定。
git log --clear-decorations
8. `--source` - Git `log` 命令中的 `--source` 選項列印在命令列中用於到達每個提交的 ref 名稱。
git log --source
選項組合
上述選項可以與 `git log` 命令組合使用,例如 `git log --all --name-only`、`git log --oneline --max-count=5` 等。
上述選項允許您自定義 `git log` 以滿足您的特定需求,無論您是在搜尋特定更改、分析分支的歷史記錄還是跟蹤問題和修復。