查看特定日期范围内的提交

Beginner

This tutorial is from open-source community. Access the source code

简介

Git 是一个强大的版本控制系统,它允许开发者跟踪代码库的变更。Git 最实用的功能之一是能够查看特定日期范围内的提交记录。当你试图追踪 bug 或了解项目历史时,这一功能会非常有用。

克隆 Git 仓库

要开始探索 Git 的日期范围过滤功能,我们首先需要一个 Git 仓库来进行操作。我们将使用 LabEx 提供的 git-playground 仓库。

让我们从克隆仓库开始:

  1. 在 LabEx 虚拟机中打开你的终端。
terminal
  1. 运行以下命令来克隆仓库:
git clone https://github.com/labex-labs/git-playground

你应该会看到类似以下的输出:

Cloning into 'git-playground'...
remote: Enumerating objects: 8, done.
remote: Counting objects: 100% (8/8), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 8 (delta 0), reused 8 (delta 0), pack-reused 0
Receiving objects: 100% (8/8), done.
  1. 进入仓库目录:
cd git-playground

现在我们已经将仓库克隆到本地机器上,就可以开始探索提交历史了。

探索基本的 git log 命令

现在我们已经克隆了仓库,让我们来学习如何使用 git log 命令查看提交历史。

git log 命令会显示仓库中所有提交的列表,从最近的提交开始。每个提交记录包含以下信息:

  • 唯一的提交哈希值(标识符)
  • 作者信息
  • 提交的日期和时间
  • 提交信息

让我们查看基本的提交历史:

git log

你应该会看到类似以下的输出:

commit d22f46ba8c2d4e07d773c5126e9c803933eb5898 (HEAD -> master, origin/master, origin/feature-branch, origin/HEAD)
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file2.txt

commit cf80005e40a3c661eb212fcea5fad06f8283f08f
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file1.txt

commit b00b9374a7c549d1af111aa777fdcc868d8a2a01
Author: Hang <huhuhang@gmail.com>
Date:   Wed Apr 26 14:16:00 2023 +0800

    Initial commit

如果输出内容很长,你可以使用以下操作进行浏览:

  • Space 键向前翻页
  • b 键向后翻页
  • q 键退出日志视图

请注意,每个提交都有一个唯一的标识符(长十六进制字符串)、作者信息、提交的日期和时间,以及描述所做更改的信息。

查看特定日期范围内的提交

现在我们将学习如何根据特定日期过滤提交。Git 为此提供了两个有用的选项:

  • --since--after:显示比特定日期更新的提交
  • --until--before:显示比特定日期更旧的提交

当我们组合使用这些选项时,就可以查看特定日期范围内的提交。

让我们查看 2023 年 4 月 25 日至 2023 年 4 月 27 日之间发生的所有提交:

git log --since='Apr 25 2023' --until='Apr 27 2023'

此命令将显示 2023 年 4 月 25 日至 4 月 27 日之间所做的所有提交。输出应该如下所示:

commit d22f46ba8c2d4e07d773c5126e9c803933eb5898 (HEAD -> master, origin/master, origin/feature-branch, origin/HEAD)
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file2.txt

commit cf80005e40a3c661eb212fcea5fad06f8283f08f
Author: Hang <huhuhang@users.noreply.github.com>
Date:   Wed Apr 26 14:16:25 2023 +0800

    Added file1.txt

commit b00b9374a7c549d1af111aa777fdcc868d8a2a01
Author: Hang <huhuhang@gmail.com>
Date:   Wed Apr 26 14:16:00 2023 +0800

    Initial commit

Git 接受多种日期格式,包括:

  • "YYYY-MM-DD"(例如,2023-04-25
  • "Month DD YYYY"(例如,Apr 25 2023
  • "DD Month YYYY"(例如,25 Apr 2023

尝试使用另一种日期格式,看看不同日期范围内是否有提交:

git log --since='2023-04-20' --until='2023-04-24'

如果在该时间段内没有提交,此命令可能不会返回任何结果,这是完全正常的。

使用相对日期和格式化选项

Git 还支持相对日期,这对于快速查看近期活动非常方便。

让我们查看过去 12 周内的所有提交:

git log --since='12 weeks ago'

根据你运行此命令的时间,如果你在该时间段内有提交,你可能会看到所有提交,或者只看到其中一部分。

其他有用的相对日期格式包括:

  • "X days ago"
  • "X months ago"
  • "yesterday"
  • "last week"

让我们尝试查看过去一年的提交:

git log --since='1 year ago'

此命令将显示过去一年中所做的所有提交。

额外的格式化选项

git log 提供了各种格式化选项来定制输出。以下是一些有用的选项:

  1. 要显示更简洁的日志,每个提交显示在一行中:
git log --oneline --since='Apr 25 2023' --until='Apr 27 2023'

输出将如下所示:

d22f46b (HEAD -> master, origin/master, origin/feature-branch, origin/HEAD) Added file2.txt
cf80005 Added file1.txt
b00b937 Initial commit
  1. 要查看每次提交中更改的文件:
git log --name-status --since='Apr 25 2023' --until='Apr 27 2023'

此命令显示每次提交中修改的文件的状态,这有助于你了解具体做了哪些更改。

这些格式化选项可以与日期过滤器结合使用,以创建强大的查询,帮助你更有效地了解项目的历史。

总结

在本次实验中,你学习了如何使用 Git 查看特定日期范围内的提交。你探索了以下内容:

  • 如何将 Git 仓库克隆到本地机器
  • 如何使用基本的 git log 命令查看提交历史
  • 如何使用 --since--until 选项根据特定日期范围过滤提交
  • 如何使用像“12 weeks ago”这样的相对日期进行更灵活的过滤
  • 如何使用格式化选项自定义 git log 的输出

这些技能对于理解项目历史、追踪 bug 以及回顾代码库的开发时间线至关重要。当你继续使用 Git 时,这些过滤技巧将帮助你轻松地浏览大型仓库。