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 <john@example.com>
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 john@example.com
      | | Date: Sat Apr 10 12:00:00 2021 +0800
      | |
      | | Merge branch 'feature'
      | |
      | * commit 9a6b1e1 (feature)
      | | Author: John john@example.com
      | | Date: Fri Apr 9 12:00:00 2021 +0800
      | |
      | | Add new feature
      | |

    • | commit c7f3c3a
      |/ Author: John john@example.com
      | Date: Thu Apr 8 12:00:00 2021 +0800
      |
      | Update README.md
      |

    • commit a2c1f1b
      Author: John john@example.com
      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 john@example.com
    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 john@example.com
    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 john@example.com
    Date: Sat Apr 10 12:00:00 2021 +0800

     Update README.md
    

    1 1 README.md

    commit c7f3c3a
    Author: John john@example.com
    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 john@example.com
      | | Date: Sat Apr 10 12:00:00 2021 +0800
      | |
      | | Merge branch 'feature'
      | |
      | * commit 9a6b1e1 (feature)
      | | Author: John john@example.com
      | | Date: Fri Apr 9 12:00:00 2021 +0800
      | |
      | | Add new feature
      | |

    • | commit c7f3c3a
      |/ Author: John john@example.com
      | Date: Thu Apr 8 12:00:00 2021 +0800
      |
      | Update README.md
      |

    • commit a2c1f1b
      Author: John john@example.com
      Date: Wed Apr 7 12:00:00 2021 +0800

      Initial commit

相关推荐
研究是为了理解3 小时前
Git Bash 常用命令
git·elasticsearch·bash
DKPT3 小时前
Git 的基本概念和使用方式
git
Winston Wood7 小时前
一文了解git TAG
git·版本控制
喵喵先森7 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu5438 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio11 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。11 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie613 小时前
在IDEA中使用Git
java·git
晓理紫1 天前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿1 天前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git