git log详解

文章目录

git log是用来查看历史提交记录的,那么这些记录包含什么呢?如果你不指定分支或者master,默认情况下git log显示的是目前你HEAD的位置的git提交日志,默认不加参数,git log显示如下:

  • commit 哈希id
  • 提交的Author信息
  • 提交的日期和时间
  • commit info信息

完整用法请看官方文档 ,有中文翻译:https://git-scm.com/docs/git-log/zh_HANS-CN

git log -p

要查看特定目录下最近的代码变更,可以使用git log命令结合git diff命令。git log用于查看提交历史,而git diff用于查看提交之间的具体代码变更。

以下是一种方法,用于查看src/目录下最近的代码变更:

bash 复制代码
git log -p -- src/

该命令的含义如下:

  • -p选项用于显示每个提交的具体代码变更,即显示代码补丁。
  • --后面跟着的是要查看的目录或文件,这里我们指定了src/目录。

运行该命令后,将看到每个提交的详细信息,包括提交的作者、提交时间、提交信息以及具体的代码变更。

如果只想查看某个特定文件的代码变更,可以将--后面的目录改为文件名。例如,以下命令用于查看src/main.c文件的代码变更:

bash 复制代码
git log -p -- src/main.c

这样就可以查看src/main.c文件的最近几个提交的代码变更了。

注意,git diff命令也可以用来比较工作区和暂存区、工作区和最新提交、两个提交之间的代码变更,但如果只想查看某个目录下最近的代码变更,结合git log -p更为直观和方便。

git log -p命令可以显示每个提交的修改内容,包括哪些文件被修改,被修改的行数以及具体的修改内容。这个命令比较常用,可以帮助开发者更好地了解每个提交的修改细节。

以下是一个git log -p命令的输出示例:

复制代码
commit f7d33c1 (HEAD -> master)
Author: John <[email protected]>
Date:   Sat Apr 10 12:00:00 2021 +0800

    Update README.md

diff --git a/README.md b/README.md
index 1234567..abcdefg 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
 # My Project

-This is a test project.
+This is a test project. It is used to demonstrate how to use git.

输出中,diff行表示文件的差异,@@行表示修改的具体位置,-行表示被删除的内容,+行表示被添加的内容。 注意,git log

-p命令会输出每个提交的所有修改内容,如果提交比较多,输出会比较长,可以使用其他参数,如--since、--until、--author等来筛选需要查看的提交。

其他常用的参数

  1. --oneline : 用一行的形式显示每个提交的简短信息,包括提交哈希值和提交信息的前几个字。

  2. --graph : 以图形化的方式展示提交历史,可以更直观地看到分支和合并。

  3. --decorate : 显示所有标签和分支的名称。

  4. --author : 只显示指定作者的提交记录,可以使用--author=<author_name>--author=<author_email> 指定。

  5. --grep : 只显示包含指定字符串的提交记录,可以使用--grep=<string>指定。

  6. --since/--until : 只显示指定时间范围内的提交记录,可以使用--since=<date>或--until=<date>指定。

  7. --format: 指定输出格式,可以使用--format=<format指定,其中可以是一些占位符,如%h代表提交哈希值,%an代表作者名字等。

  8. --stat: 显示每个提交的文件修改统计信息,包括哪些文件被修改、被修改的行数等。

  9. --numstat: 与--stat类似,但只显示文件修改的行数统计信息,不显示具体的修改内容。

  10. --graph: 以图形化的方式展示提交历史,可以更直观地看到分支和合并。

    以上是一些常用的git log参数,还有其他参数可以参考git log命令的官方文档。

    当使用git log命令时,可以使用不同的参数来定制化输出,以下是一些例子:

  11. git log --oneline: 以一行的形式显示每个提交的简短信息,包括提交哈希值和提交信息的前几个字。

    f7d33c1 (HEAD -> master) Update README.md
    c7f3c3a Add new feature
    a2c1f1b Initial commit

  12. git log --graph: 以图形化的方式展示提交历史,可以更直观地看到分支和合并。

    • commit f7d33c1 (HEAD -> master)
      |\ Merge: c7f3c3a 9a6b1e1
      | | Author: John [email protected]
      | | Date: Sat Apr 10 12:00:00 2021 +0800
      | |
      | | Merge branch 'feature'
      | |
      | * commit 9a6b1e1 (feature)
      | | Author: John [email protected]
      | | Date: Fri Apr 9 12:00:00 2021 +0800
      | |
      | | Add new feature
      | |

    • | commit c7f3c3a
      |/ Author: John [email protected]
      | Date: Thu Apr 8 12:00:00 2021 +0800
      |
      | Update README.md
      |

    • commit a2c1f1b
      Author: John [email protected]
      Date: Wed Apr 7 12:00:00 2021 +0800

      复制代码
      Initial commit
  13. git log --decorate: 显示所有标签和分支的名称。

    f7d33c1 (HEAD -> master) Update README.md
    c7f3c3a Add new feature
    a2c1f1b (tag: v1.0) Initial commit

  14. git log --author: 只显示指定作者的提交记录,可以使用--author=<author_name>或--author=<author_email>指定。

    git log --author=John

    f7d33c1 (HEAD -> master) Update README.md
    c7f3c3a Add new feature
    a2c1f1b Initial commit

  15. git log --grep: 只显示包含指定字符串的提交记录,可以使用--grep=指定。

    git log --grep="bug fix"

    f7d33c1 (HEAD -> master) Bug fix: Update README.md
    c7f3c3a Add new feature
    a2c1f1b Initial commit

  16. git log --since/--until: 只显示指定时间范围内的提交记录,可以使用--since=或--until=指定。

    git log --since="2021-04-08" --until="2021-04-10"

    f7d33c1 (HEAD -> master) Update README.md
    c7f3c3a Add new feature

  17. git log --format: 指定输出格式,可以使用--format=指定,其中可以是一些占位符,如%h代表提交哈希值,%an代表作者名字等。

    git log --format="%h %an %s"

    f7d33c1 John Update README.md
    c7f3c3a John Add new feature
    a2c1f1b John Initial commit

  18. git log --stat: 显示每个提交的文件修改统计信息,包括哪些文件被修改、被修改的行数等。

    commit f7d33c1 (HEAD -> master)
    Author: John [email protected]
    Date: Sat Apr 10 12:00:00 2021 +0800

    复制代码
     Update README.md

    README.md | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    commit c7f3c3a
    Author: John [email protected]
    Date: Thu Apr 8 12:00:00 2021 +0800

    复制代码
     Add new feature

    feature.txt | 1 +
    1 file changed, 1 insertion(+)

  19. git log --numstat: 与--stat类似,但只显示文件修改的行数统计信息,不显示具体的修改内容。

    commit f7d33c1 (HEAD -> master)
    Author: John [email protected]
    Date: Sat Apr 10 12:00:00 2021 +0800

    复制代码
     Update README.md

    1 1 README.md

    commit c7f3c3a
    Author: John [email protected]
    Date: Thu Apr 8 12:00:00 2021 +0800

    复制代码
     Add new feature

    1 0 feature.txt

  20. git log --graph: 以图形化的方式展示提交历史,可以更直观地看到分支和合并。

    • commit f7d33c1 (HEAD -> master)
      |\ Merge: c7f3c3a 9a6b1e1
      | | Author: John [email protected]
      | | Date: Sat Apr 10 12:00:00 2021 +0800
      | |
      | | Merge branch 'feature'
      | |
      | * commit 9a6b1e1 (feature)
      | | Author: John [email protected]
      | | Date: Fri Apr 9 12:00:00 2021 +0800
      | |
      | | Add new feature
      | |

    • | commit c7f3c3a
      |/ Author: John [email protected]
      | Date: Thu Apr 8 12:00:00 2021 +0800
      |
      | Update README.md
      |

    • commit a2c1f1b
      Author: John [email protected]
      Date: Wed Apr 7 12:00:00 2021 +0800

      Initial commit

相关推荐
诚诚程程成2 小时前
git配置github
git·github
阿杜杜不是阿木木2 小时前
使用ollama部署本地大模型(没有GPU也可以),实现IDEA和VS Code的git commit自动生成
linux·git·vscode·ai·intellij-idea·ollama
HelloDam5 小时前
Git简洁安装方式和使用方式【附安装包资源,Git基础操作,如拉取项目、上传代码、拉取代码】
git·github
咖啡教室21 小时前
日常开发中常用的git操作命令和使用技巧
git
carterwu1 天前
git工作流程的分类和对应场景
git
2401_840192271 天前
如何学习一门计算机技术
开发语言·git·python·devops
EleganceJiaBao1 天前
【Git】5 个分区的切换方式及示例
git·github·add
LCY1332 天前
spring 中的DAO是什么
运维·git·jenkins
柚几哥哥2 天前
IntelliJ IDEA全栈Git指南:从零构建到高效协作开发
java·git·intellij-idea
遇到困难睡大觉哈哈2 天前
Git推送错误解决方案:`rejected -> master (fetch first)`
大数据·git·elasticsearch