Git - 查看 commit 提交历史

2023-11-09

查看提交历史

在提交了若干更新,又或者克隆了某个项目之后,如何查看提交历史

git log

官方栗子

运行下面的命令获取该项目:

git clone https://github.com/scha

运行 git log 命令

可以获取到的信息

  • 不传入任何参数的默认情况下,git log 会按时间先后顺序列出所有的提交,最近的更新排在最上面

  • 会列出每个提交的 SHA-1 校验和、作者的名字和电子邮件地址、提交时间以及提交说明

git log 常见命令行参数

  • -p、--patch:它会显示每次提交所引入的差异(按 patch 的格式输出)。

  • -n:n 是数目,限制显示的日志数量,比如 -2,输出两条

-p 除了显示基本信息之外,还附带了每次提交的变化,好处:当进行代码审 review 时,可以快速看到别人提交代码的差异

--stat

看到每次提交的简略统计信息

每次提交的下面列出所有被修改过的文件、有多少文件被修改了以及被修改过的文件的哪些行被移除或是添加了

--pretty

可以使用不同格式来显示提交历史,有一些内建的子选项供你使用。

--pretty=oneline

将每个提交放在一行显示,在浏览大量的提交时非常有用

另外还有 shortfullfuller 选项,它们展示信息的格式基本一致,但是详尽程度不一

--pretty=format

可以定制记录的显示格式

这样的输出对后期提取分析格外有用,因为输出的格式不会随着 Git 的更新而发生改变

git log --pretty=format 常用的选项

列出了 format 接受的常用格式占位符的写法及其代表的意义

选项

说明

%H

提交的完整哈希值

%h

提交的简写哈希值

%T

树的完整哈希值

%t

树的简写哈希值

%P

父提交的完整哈希值

%p

父提交的简写哈希值

%an

作者名字

%ae

作者的电子邮件地址

%ad

作者修订日期(可以用 --date=选项 来定制格式)

%ar

作者修订日期,按多久以前的方式显示

%cn

提交者的名字

%ce

提交者的电子邮件地址

%cd

提交日期

%cr

提交日期(距今多长时间)

%s

提交说明

onelineformat 与另一个 log 选项 --graph 结合使用时尤其有用,展示你的分支、合并历史:

git log --pretty=format:"%h %s" --graph
* 2d3acf9 ignore errors from SIGCHLD on trap
*  5e3ee11 Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 Added a method for getting the current branch.
* | 30e367c timeout code and tests
* | 5a09431 add timeout protection to grit
* | e1193f8 support for heads with slashes in them
|/
* d6016bc require time for xmlschema
*  11d191e Merge branch 'defunkt' into local

git log 输出格式的常用选项

选项

说明

-p

按补丁格式显示每个提交引入的差异。

--stat

显示每次提交的文件修改统计信息。

--shortstat

只显示 --stat 中最后的行数修改添加移除统计。

--name-only

仅在提交信息后显示已修改的文件清单。

--name-status

显示新增、修改、删除的文件清单。

--abbrev-commit

仅显示 SHA-1 校验和所有 40 个字符中的前几个字符。

--relative-date

使用较短的相对时间而不是完整格式显示日期(比如“2 weeks ago”)。

--graph

在日志旁以 ASCII 图形显示分支与合并历史。

--pretty

使用其他格式显示历史提交信息。可用的选项包括 oneline、short、full、fuller 和 format(用来定义自己的格式)。

--oneline

--pretty=oneline --abbrev-commit 合用的简写。

限制输出长度

  • -n:限制输出提交历史的数量

  • --since、--until:按照时间限制

下面的命令会列出最近两周的所有提交

git log --since=2.weeks
该命令可用的格式十分丰富
可以是类似 "2008-01-15" 的具体的某一天,也可以是类似 "2 years 1 day 3 minutes ago" 的相对日期。

git lot 限制输出的选项

选项

说明

-<n>

仅显示最近的 n 条提交。

--since, --after

仅显示指定时间之后的提交。

--until, --before

仅显示指定时间之前的提交。

--author

仅显示作者匹配指定字符串的提交。

--committer

仅显示提交者匹配指定字符串的提交。

--grep

仅显示提交说明中包含指定字符串的提交。

-S

仅显示添加或删除内容匹配指定字符串的提交。

--

仅显示某些文件或目录的历史提交,-- 文件名/目录名

--no-merges

不显示合并提交的历史记录

来看一个实际的例子,如果要在 Git 源码库中查看 Junio Hamano 在 2008 年 10 月其间, 除了合并提交之外的哪一个提交修改了测试文件,可以使用下面的命令:

$ git log --pretty="%h - %s" --author='Junio C Hamano' --since="2008-10-01" \
   --before="2008-11-01" --no-merges -- t/
5610e3b - Fix testcase failure when extended attributes are in use
acd3b9e - Enhance hold_lock_file_for_{update,append}() API
f563754 - demonstrate breakage of detached checkout with symbolic link HEAD
d1a43f2 - reset --hard/read-tree --reset -u: remove unmerged new paths
51a94af - Fix "checkout --track -b newbranch" on detached HEAD
b0ad11e - pull: allow "git pull origin $something:$current_branch" into an unborn branch

git commit 没反应

git commit 没有反应的原因可能有很多,下面是一些常见的原因:

  1. 你没有将文件添加到暂存区,因此 git commit 无法提交。你需要在 git commit 之前运行 git add 将文件添加到暂存区。

  1. 你的 git 配置文件中缺少用户名和电子邮件地址。git commit 需要这些信息来记录提交的作者和邮箱。

  1. 你的 git 客户端版本过旧,不兼容当前的 git 服务器版本。

  1. 你正在进行的操作在 git 分支上是不安全的,如:正在合并分支或正在执行 Gitflow 工作流程中的操作。

  1. 你没有权限提交到远程仓库。

  1. 你的网络连接中断导致无法连接到远程仓库。

如果你无法解决问题,可以尝试查看 git 的日志文件(通常在 .git/logs 目录中)或检查远程仓库的日志以获取更多信息。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git - 查看 commit 提交历史 的相关文章

随机推荐

  • Windows 下安装并配置Maven

    前言 Maven 翻译为 专家 内行 是Apache下的一个纯Java开发的开源项目 Maven 是一个项目管理工具 可以对Java项目进行构建 依赖管理 Maven是基于项目对象模型 POM project object model 可以
  • 输入阻抗与偏置电流

    对于高阻信号要选用FET运放 高阻信号R2和运放上的高阻并联会影响实际R2电阻值 CMRR 共模抑制比 放大电路对差模信号的电压增益与对共模信号的电压增益之比的绝对值 因为我们要抑制零漂所以共模电压增益越小越好 而差模电压增益越大越好 所以
  • pycharm上已存在某些库,但无法调用的问题解决

    如果出现pycharm上已存在openpyxl 但无法调用的时候 就是pycharm安装openpyxl库时 安装的位置与pycharm中引用python解释器的位置不一致 导致不能调用opentyxl 所以再安装openpyxl时 把项目
  • Python 绝对简明手册

    原文 简述 1 阅读须知 文中使用 gt gt gt 作为会命令行中的输出信息的前缀 对于不清楚用用途的函数可以在解释器下面输入 help 函数名 来获取相关信息 另外 自带的文档和google也是不可少的 2 基本语法 2 1 if el
  • 简历制作讲解

    简历制作讲解 前期假想 简历如同一本书 书大体分为文本结构和文本内容 一 简历文本结构 一 个人信息 必要 二 教育背景 必要 三 自我介绍 可选 四 工作经历 五 项目经历 六 技能评价 二 简历文本内容 一 个人信息 必要 必要信息 姓
  • WebTestClient使用

    介绍 WebTestClient用于测试WebFlux服务器端点的主要入口点 它具有与WebClient非常相似的API 内部大部分调用WebClient实例 主要提供测试上下文 绑定到一个服务 WebTestClient testClie
  • 解决:参考的对象类型不支持尝试的操作。 [已退出进程,代码为 4294967295]

    问题描述 win10系统下运行wsl时候显示错误 参考的对象类型不支持尝试的操作 已退出进程 代码为 4294967295 经过个人测试解决方式为关闭网易UU当前的加速 过一会就恢复正常 不需要重启
  • MySQL架构的Server层的执行过程

    1 连接器 主要负责跟客户端建立连接 获取权限 维持和管理连接 2 查询缓存 优先在缓存中进行查询 如果查到了则直接返回 如果缓存中查询不到 在去数据库中查询 3 解析器 分析器 分析器的工作主要是对要执行的SQL语句进行词法解析 语法解析
  • 基于SpringBoot+Async注解整合多线程

    提示 本文没有使用原生的创建线程方式 默认已掌握创建线程的四种方式 全文基于SpringBoot框架 要求读者掌握SpringBoot操作 本人能力有限 如有遗漏或错误 敬请指正 谢谢 文章目录 其他文章 前言 一 为什么要使用多线程 二
  • 计算机 服装生产管理的变化,服装生产管理概述.doc

    PAGE PAGE 182 目 录 TOC o n h z HYPERLINK l To 第一章 服装生产管理概述 HYPERLINK l To 第一节 服装生产概述 HYPERLINK l To 一 服装生产企业的特点 HYPERLINK
  • Yii 2.0集成七牛云

    背景知识 七牛云就是我们常说的图床 什么是图床 可以简单理解为是一种存储图片资源的服务器 本文基于Yii2简单介绍七牛云的使用 1 首先在七牛云平台创建账户 传送门 2 登陆账户之后 点击头部菜单管理控制台 进入之后 点击左侧菜单存储对象
  • 技术岗-网上测评智力题

    A 逻辑推理 1 你让工人为你工作7天 给工人的回报是一根金条 金条平分成相连的7段 你必须在每天结束时给他们一段金条 如果只许你两次把金条弄断 你如何给你 的工人付费 2 请把一盒蛋糕切成8份 分给8个人 但蛋糕盒里还必须留有一份 3 小
  • Qt Plugin

    问题 创建 Qt 插件 方法 1 QML 插件 1 qmldir plugin dll plugin qml 位于同一目录 目录名和模块名相同 2 错误列表如下 no dir no qmldir module module is not i
  • CUDA C编程3 - 并行性衡量指标

    系列文章目录 文章目录 系列文章目录 前言 一 CUDA C并行性衡量指标介绍 二 案例介绍 1 案例说明 2 案例实现 3 结果分析 总结 参考资料 前言 CUDA编程 就是利用GPU设备的并行计算能力实现程序的高速执行 CUDA内核函数
  • 相关系数R-判定系数R方的matlab实现

    相关系数 判定系数 相关系数是最早由统计学家卡尔 皮尔逊设计的统计指标 是研究变量之间线性相关程度的量 一般用字母 r 表示 由于研究对象的不同 相关系数有多种定义方式 较为常用的是皮尔逊相关系数 相关表和相关图可反映两个变量之间的相互关系
  • Table表格(antd-design组件库)简单使用

    1 Table表格 展示行列数据 2 何时使用 当有大量结构化的数据需要展现时 当需要对数据进行排序 搜索 分页 自定义操作等复杂行为时 组件代码来自 表格 Table Ant Design 3 本地验证前的准备 参考文章 react项目
  • java 正则表达式 pattern_Java—正则表达式(Pattern类和Matcher类)

    正则表达式介绍 正则表达式可以用于对字符串的处理 相当于是一个匹配字符串的模板 主要包含查找 替换 分割 提取等操作 Java中通过Pattern和Matcher类提供对正则的支持 字符处理 特殊字符处理 对于特殊字符 前面都要加上 进行转
  • 前端埋点实现

    您好 如果喜欢我的文章 可以关注我的公众号 量子前端 将不定期关注推送前端好文 前端埋点实践 介绍 1 实现自定义hook 监测组件 2 收集数据 3 前端错误捕捉 4 发送后端保存数据 5 收集数据展示 总结 介绍 这段时间博主一直在投入
  • c语言编程单片机实现一个按键顺序按亮,另一个顺序按灭

    Led顺序点亮与熄灭 一次一个 博主是小白 这几天一直在搜索和思考怎么实现我的功能 即一共俩个按键 8个led 现象一 采用移位函数 实现按s1 led顺序点亮 按s2 led顺序熄灭 我实现的是一个一个顺序点亮 一个一个顺序熄灭 incl
  • Git - 查看 commit 提交历史

    查看提交历史 在提交了若干更新 又或者克隆了某个项目之后 如何查看提交历史 git log 官方栗子 运行下面的命令获取该项目 git clone https github com scha 运行 git log 命令 可以获取到的信息 不