- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支和合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 追踪分支
- Git - 变基
- Git - 变基 vs. 合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - Patch 操作
- Git - Diff 操作
- 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 能够详细记录项目随时间推移所做的更改历史。通过在每次提交中记录每个更改,Git 允许开发人员跟踪、还原并了解其代码库的演变过程。
提交历史对于从事项目的个人开发人员和团队来说都是关键资源,使他们能够审查过去的更改、调试问题并有效地协作。
提交历史的重要性
Git 中的提交历史本质上是快照的时间线,每个快照都代表项目开发中的一个点。通过查看提交历史,您可以:
了解项目的演变:查看代码库如何随时间推移发生变化以及谁进行了这些更改。
追踪错误:通过审查具体的提交来找出错误何时何地被引入。
回滚到以前的版本:如果最近的更改导致问题,您可以回滚到代码的早期稳定版本。
高效协作:团队可以看到其他人正在做什么,审查代码更改,并确保项目按计划进行。
`git log` 命令
您可以使用 **git log** 命令检查 Git 中的提交历史,该命令提供了对所做更改的完整概述,从而更容易跟踪开发进度。
**git log** 显示提交列表,从最新的提交开始,以及提交哈希、作者、日期和提交消息等信息。
要在 Git 中查看提交历史记录,请运行以下命令:
$ git log
$ git log commit 94744071e847ab78390eb1b8a5e013dbeee7ced2 (HEAD -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 17:51:17 2024 +0530 modified the margin and font size commit 1bc52022c8fe3ee799ccf36bdc3e6ec0c99bb9f5 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 13:01:47 2024 +0530 changed the width dimension commit a98962782a8bc6ac91b793b634eb5786b3fb85fc Author: tonystark <[email protected]> Date: Sat Dec 10 08:35:10 2022 +0000 Initial commit :...skipping...
这个简单的日志视图为您提供了一个线性的提交历史,最新的更改显示在顶部。
**git log** 命令显示默认的提交历史视图,其中包括:
提交哈希:提交的唯一标识符(SHA-1 哈希)。
作者:进行提交的人员的姓名和电子邮件地址。
日期:提交的日期和时间。
提交消息:作者提供的简短描述,解释提交包含的内容。
Git log 命令显示了几种查看仓库历史记录的方法。
按文件浏览提交历史
有时,您可能希望查看特定文件的历史记录,而不是整个项目。Git 允许您使用 git log 命令和文件名来实现这一点。
git log <file>
如果您想查看影响文件的每个提交的差异,您可以添加 **-p** 标志。
$ git log -p -2
在上例中,**-p** 选项显示提交的详细视图,**-2** 显示最后两次提交。
$ git log -p -2 commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 (HEAD -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 17:51:17 2024 +0530 changed top and right dimensions diff --git a/main.html b/main.html index f7f85dd..9b97bad 100644 --- a/main.html +++ b/main.html @@ -46,8 +46,8 @@ display : inline-block; border : 2px solid green; position: absolute; - right:45px; top: 36px; + right:42px; ^M + top:35px; ^M :...skipping... commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 (Head -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 18:56:17 2024 +0530 changed top and right dimensions diff --git a/main.html b/main.html index f7f85dd..9b97bad 100644 --- a/main.html +++ b/main.html @@ -46,8 +46,8 @@
您可以使用 **git log --stat** 命令显示每次提交所做更改的简要概述,包括更改的文件数、添加或删除的行数以及文件名。
$ git log --stat
$ git log --stat commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 (HEAD -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 17:51:17 2024 +0530 changed top and right dimensions main.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletion(-) commit 94744071e847ab78390eb1b8a5e013dbeee7ced2 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 17:51:17 2024 +0530 modified the margin and font size main.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) commit 1bc52022c8fe3ee799ccf36bdc3e6ec0c99bb9f5 Author: Tutorialspoint <[email protected]> :...skipping... commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 (Head -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 13:01:47 2024 +0530 changed top and right dimensions
如果您想完整了解每次提交所做的所有更改,包括添加、删除或修改的具体行。
$ git log --stat -p
$ git log --stat -p commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 (HEAD -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 17:51:17 2024 +0530 changed top and right dimensions --- main.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletion(-) diff --git a/main.html b/main.html index f7f85dd..9b97bad 100644 --- a/main.html +++ b/main.html @@ -46,8 +46,8 @@ display : inline-block; border : 2px solid green; position: absolute; :...skipping... commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 (Head -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 18:56:17 2024 +0530
自定义 `git log` 输出
虽然 **git log** 的默认输出很有用,但您可以根据需要自定义它以显示更多或更少的信息。Git 提供了多个选项来格式化和筛选提交历史记录。
单行日志
如果您希望更简洁地查看提交历史,则每一提交显示在一行中,您可以使用 **--oneline** 标志。这对于快速概述历史记录特别有用。
$ git log --oneline
示例输出
abc1234 Add user authentication feature def7890 Update README with installation instructions
此视图仅显示简写的提交哈希和提交消息,便于快速扫描历史记录。
按日期或作者筛选
您可以按日期、作者或两者的组合筛选提交历史记录。当您尝试查找特定提交或查看特定时间段内所做的更改时,这非常有用。
按日期筛选:要显示自特定日期以来进行的提交,请使用 **--since** 选项。
git log --since="2024-08-01"
按作者筛选:要查看特定作者所做的提交,请使用 **--author** 选项。
git log --author="Tutorialspoint "
您可以组合这些选项以进一步缩小历史记录范围。例如,要查看 Tutorialspoint 自 2024 年 8 月 1 日以来所做的所有提交:
git log --author="Tutorialspoint" --since="2024-08-01"
格式化提交输出
Git 允许您使用 --pretty 选项自定义每个提交的显示方式。您可以指定格式或使用 Git 的预定义格式之一。
简短格式
git log --pretty=short
自定义格式:您可以指定要查看提交的哪些元素。
git log --pretty=format:"%h - %an, %ar : %s"
命令 **git log --pretty=format:"%h - %an, %ar : %s"** 用于以简单的方式显示关于每个提交的特定信息。它将以简写的提交哈希、作者、日期和提交消息显示每一提交。
%h:提交哈希
%an:作者姓名
%ar:日期
%s:提交消息
$ git log --pretty=format:"%h - %an, %ar : %s"
$ git log --pretty=format:"%h - %an, %ar : %s" 09708ca - Tutorialspoint, 15 minutes ago : color and heading changed 45ef43e - Tutorialspoint, 18 hours ago : changed top and right dimensions 9474407 - Tutorialspoint, 19 hours ago : modified the margin and font size 1bc5202 - Tutorialspoint, 23 hours ago : changed the width dimension a989627 - tonystark, 1 year, 5 months ago : Initial commit
下表显示了可与 **git log --pretty=format** 命令一起使用的有用的说明符。
说明符 | 输出描述 |
---|---|
%H | 提交哈希 |
%h | 简写提交哈希 |
%T | 树哈希 |
%t | 简写树哈希 |
%P | 父哈希 |
%p | 简写父哈希 |
%an | 作者姓名 |
%ae | 作者邮箱 |
%ad | 作者日期 |
%ar | 作者日期(相对) |
%cn | 提交者姓名 |
%ce | 提交者邮箱 |
%cd | 提交者日期 |
%cr | 提交者日期(相对) |
%s | 主题 |
当您将 **--oneline** 或 **--format** 选项与 **--graph** 结合使用时,Git 会在每个提交语句旁边显示一个 ASCII 图表。
命令 **git log --pretty=format:"%h %s" --graph** 以分支和合并历史的可视化表示形式显示每个提交的简写哈希和提交消息。
$ git log --pretty=format:"%h %s" --graph
$ git log --pretty=format:"%h %s" --graph * 09708ca color and heading changed * 45ef43e changed top and right dimensions * 9474407 modified the margin and font size * 1bc5202 changed the width dimension * a989627 Initial commit
命令 **git log --pretty=oneline** 用于快速或简短地概述大量提交,而无需遍历每个提交的几行数据。
它将以简写的提交哈希和提交消息显示每一提交。
$ git log --pretty=oneline
$ git log --pretty=oneline 45ef43e5c3664f9ff725ad7b41a80af6ab515 (HEAD -> main, origin/main, origin/HEAD) changed top and right dimensions 94744071e847ab78390eb1b8a5e013dbeee7ced2 modified the margin and font size 1bc52022c8fe3ee799ccf36bdc3e6ec0c99bb9f5 changed the width dimension a98962782a8bc6ac91b793b634eb5786b3fb85fc Initial commit
下表显示了 git log 的常见格式化选项。
选项 | 输出描述 |
---|---|
-p | 显示每次提交引入的补丁。 |
--stat | 显示每次提交中修改的文件的统计信息。 |
--shortstat | 仅显示 **--stat** 命令中的更改/插入/删除行。 |
--name-only | 显示提交信息后修改的文件列表。 |
--name-status | 显示受影响的文件列表以及添加/修改/删除信息。 |
--abbrev-commit | 显示 SHA-1 校验和的前几个字符,而不是全部 40 个字符。 |
--relative-date | 以相对格式显示日期(例如,“3 周前”),而不是使用完整日期格式。 |
--graph | 在日志输出旁边显示分支和合并历史的 ASCII 图表。 |
--pretty | 以替代格式显示提交。选项值包括 oneline、short、full、fuller 和 format(您在其中指定自己的格式)。 |
--oneline | 一起使用的 **--pretty=oneline --abbrev-commit** 的简写。 |
限制日志输出
Git log 提供了一些有用的限制选项,允许您仅显示提交的子集。您可以使用 **-
Git 自动将所有输出定向到分页器,允许您一次仅查看一页日志输出。
您可以使用时间限制选项(如 **--since** 和 **--until**)查看特定时间间隔内的 Git 提交历史记录。
以下命令显示自三周前的提交历史
$ git log --since=3.weeks commit 09708ca8bfee4ad20414511b2d847282b17b1c9f (Head -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Thu Apr 18 12:15:17 2024 +0530 color and heading changed commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 18:56:17 2024 +0530 changed top and right dimensions commit 94744071e847ab78390eb1b8a5e013dbeee7ced2 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 17:51:17 2024 +0530 modified the margin and font size commit 1bc52022c8fe3ee799ccf36bdc3e6ec0c99bb9f5 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 13:01:47 2024 +0530
以下命令显示自2022-03-17的提交历史
$ git log --since=2022-03- commit 09708ca8bfee4ad20414511b2d847282b17b1c9f (Head -> main, origin/main, origin/HEAD) Author: Tutorialspoint <[email protected]> Date: Thu Apr 18 12:15:17 2024 +0530 color and heading changed commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 18:56:17 2024 +0530 changed top and right dimensions commit 94744071e847ab78390eb1b8a5e013dbeee7ced2 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 17:51:17 2024 +0530 modified the margin and font size :...skipping... commit 09708ca8bfee4ad20414511b2d847282b17b1c9f (Head -> main, origin/main, origin/HEAD)
您可以使用搜索条件检查提交列表。--author选项用于标识特定作者,而--grep用于搜索提交消息中的关键词。
注意:您可以多次使用--author和--grep选项,根据不同的条件过滤提交。添加--all-match选项可以将输出限制为满足所有给定--grep模式的提交。
-S选项被称为Git的“pickaxe”(镐)。它显示更改给定字符串出现次数的提交。
$ git log -S <string>
$ git log -S font-size commit a98962782a8bc6ac91b793b634eb5786b3fb85fc Author :tonystark <[email protected]> Date : Sat Dec 10 08:35:10 2022 +0000 Initial commit Created from https://vercel.com/new
您可以在git log --之后指定目录或文件名,这将过滤日志输出,只显示更改了这些文件的提交。
$ git log -- path/to/file
$ git log -- main.html commit 09708ca8bfee4ad20414511b2d847282b17b1c9f (HEAD -> main, origin/main, origin/HEAD) Author :Tutorialspoint <[email protected]> Date : Thu Apr 18 12:15:17 2024 +0530 color and heading changed commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 Author : Tutorialspoint <[email protected]> Date : Wed Aug 07 18:56:17 2024 +0530 changed top and right dimensions commit 94744071e847ab78390eb1b8a5e013dbeee7ced2 Author :Tutorialspoint <[email protected]> Date : Wed Aug 07 17:51:17 2024 +0530 modified the margin and font size commit 1bc52022c8fe3ee799ccf36bdc3e6ec0c99bb9f5 Author :Tutorialspoint <[email protected]> Date : Wed Aug 07 13:01:47 2024 +0530
下表显示了限制git log输出的选项
选项 | 输出描述 |
---|---|
-<n> | 显示每次提交引入的补丁。 |
--since, --after | 将提交限制为在指定日期之后进行的提交。 |
--until, --before | 将提交限制为在指定日期之前进行的提交。 |
--author | 仅显示作者条目与指定字符串匹配的提交。 |
--committer | 仅显示提交者条目与指定字符串匹配的提交。 |
--grep | 仅显示提交消息包含该字符串的提交。 |
-S | 仅显示添加或删除与该字符串匹配的代码的提交。 |
要查找2024年4月Tutorialspoint提交的更改Git源代码中测试文件的提交,请运行以下命令
$ git log --pretty="%h - %s" --author='Tutorialspoint' --since="2024-4-1" --before="2024-4-30" 09708ca - color and heading changed 45ef43e - changed top and right dimensions 9474407 - modified the margin and font size 1bc5202 - changed the width dimension
要查找提交历史的总大小,请运行以下命令
$ git log --log-size commit 09708ca8bfee4ad20414511b2d847282b17b1c9f (HEAD -> main, origin/main, origin/HEAD) log size: 122 Author :Tutorialspoint <[email protected]> Date : Thu Apr 18 12:15:17 2024 +0530 color and heading changed commit 45ef43e5c3664f9ff725ad7b41a80af6ab515 log size: 130 Author :Tutorialspoint <[email protected]> Date : Wed Aug 07 18:46:17 2024 +0530 changed top and right dimensions commit 94744071e847ab78390eb1b8a5e013dbeee7ced2 log size: 130 Author :Tutorialspoint <[email protected]> Date : Wed Aug 07 17:51:17 2024 +0530 modified the margin and font size :...skipping...
要反向查找提交历史,请运行以下命令
$ git log --reverse commit a98962782a8bc6ac91b793b634eb5786b3fb85fc Author: tonystark <[email protected]> Date: Sat Dec 10 08:35:10 2022 +0000 Initial commit Created from https://vercel.com/ commit 1bc52022c8fe3ee799ccf36bdc3e6ec0c99bb9f5 Author: Tutorialspoint <[email protected]> Date: Wed Aug 07 13:01:47 2024 +0530 changed the width dimension commit 94744071e847ab78390eb1b8a5e013dbeee7ced2 Author: TutorialspointDate: Wed Aug 07 17:51:17 2024 +0530 :...skipping... commit a98962782a8bc6ac91b793b634eb5786b3fb85fc Author :tonystark <[email protected]> Date : Sat Dec 10 08:35:10 2022 +0000 Initial commit Created from https://vercel.com/new